问Q.all的未处理拒绝原因

Yoo*_*rek 5 javascript promise q

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

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

但......

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

这是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);
    });
Run Code Online (Sandbox Code Playgroud)

Ben*_*aum 2

这是 Q 处理未处理拒绝的方式的一个错误。它不能很好地检测未处理的拒绝,因此该功能被删除。

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

这是更新的小提琴