Q необработанные причины отказа с Q.all

Я получаю это предупреждение для кода ниже, и я не понимаю, почему.

Это похоже на этот вопрос: Причины необработанного отклонения (должны быть пустыми)

но ...

Я почти уверен, что обрабатываю все ошибки, так почему предупреждение?

Вот JSFiddle: http://jsfiddle.net/yoorek/jLLbR/

function run(number) {
    var deferred = Q.defer();

    if (number % 2) {
        deferred.reject(new Error('Error for ' + number));
    } else {
        deferred.resolve(number);
    }

    return deferred.promise;
}

var promises = [], data = [1, 2, 3, 4, 5];

data.forEach(function (item) {
    var promise;

    promise = run(item)
        .then(function (result) {
            log.info('Success : ' + result);
        })
        .catch (function (error) {
            log.info('Error Handler in loop ' + error.message);
        });

    promises.push(promise);
});

Q.all(promises)
    .then(function () {
        log.info('All Success');
    })
    .catch (function (error) {
        log.info('Error handler for All ' + error.message);
    });

person Yoorek    schedule 17.04.2014    source источник
comment
Что бы это ни стоило, Bluebird правильно справляется с ситуацией. jsfiddle.net/YhLUW   -  person Benjamin Gruenbaum    schedule 17.04.2014


Ответы (1)


Это была ошибка, связанная с тем, как Q делал необработанные отказы. Он не очень хорошо обнаруживал необработанные отклонения, и эта функция была удалена.

Обновите свою версию Q с 1.0.0 или используйте Bluebird, который правильно отслеживает ошибки.

Вот обновленная скрипта

person Benjamin Gruenbaum    schedule 17.04.2014