我有几个可以并行执行的功能。使用async.parallel()
工作正常,但是当收到错误时它会执行主回调。
由于功能是独立的,我仍然希望其他人的结果,即使有错误。
这是我目前的代码。我需要另外的async
函数吗?
var async=require('async');
async.parallel({
one:function(callback)
{
callback(null,1);
},
two:function(callback)
{
callback("ERROR Occured");
},
three:function(callback)
{
callback(null,3);
},
four:function(callback)
{
callback(null,4);
}
},function(err,result)
{
console.log(err);
console.log(result);
});
答案 0 :(得分:0)
您可以使用reflectAll
:
var async = require('async');
async.parallel(async.reflectAll([
function(callback) {
callback(null,1);
},
function(callback) {
callback("ERROR Occured");
},
function(callback) {
callback(null,3);
},
function(callback) {
callback(null,4);
}
]), function(err,result) {
console.log(err);
console.log(result);
});
here解释了这是如何工作的:
将函数包含在另一个函数中,即使错误也始终返回数据。返回的对象具有属性
error
或value
。