2014-04-17 147 views
5

我在下面的代码中得到这个警告,我不明白为什么。Q.all处理的拒绝原因问题

它类似于这样的问题:Unhandled rejection reasons (should be empty)

但是......

我敢肯定,我处理所有的错误,为什么报警?

这里的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); 
    }); 
+0

对于它的价值,蓝鸟正确处理的情况。 http://jsfiddle.net/YhLUW/ –

回答

2

这是一个符合Q如何拒绝做未处理的错误。它没有很好地检测到未处理的拒绝,功能是removed

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

Here's an updated fiddle

相关问题