使用节点异步并行回调

时间:2016-06-16 10:43:41

标签: node.js asynchronous node-async

我有几个可以并行执行的功能。使用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);
});

1 个答案:

答案 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解释了这是如何工作的:

  

将函数包含在另一个函数中,即使错误也始终返回数据。返回的对象具有属性errorvalue