Q与Q.all未经处理的拒绝原因

Q unhandled rejection reasons with Q.all

本文关键字:拒绝 all 处理      更新时间:2023-09-26

我收到下面代码的警告,我不明白为什么。

类似于这个问题:未处理的拒绝原因(应为空)

但是。。。

我很确定我正在处理所有的错误,那么为什么要发出警告呢?

以下是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);
    });

这是Q如何处理未经处理的拒绝的一个错误。它没有很好地检测到未处理的拒绝,因此该功能被删除。

从1.0.0更新您的Q版本,或者使用能够正确跟踪错误的Bluebird。

这是一个更新的fiddle