本文介绍了复杂的用例Node.js的异步模块的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在使用Node.js的作为我的后端像DB查询/ API调用,等我读到的Node.js的并决定给它一个尝试。它一直致力于为简单的使用情况下,我想在并联或串联的一些任务,但不知何故,我在要求降落在我需要的异步的串联/并联/瀑布技术的最佳组合。

使用案例:

我有以下有回调实现的功能:

 函数A(输入,回调){
...
回调(ERR,结果);
}
函数B(输入1,输入2,回调){
...
回调(ERR,结果);
}
函数C(输入,回调){
...
回调(ERR,结果);
}
函数D(输入,回调){
...
回调(ERR,结果);
}
函数E(输入,回调){
...
回调(ERR,结果);
}

和他们的执行顺序应该是这样的:

A - > [B - > D]。结果
A - > [C - > E]


  • B,D,C,E的执行A.后

  • 后B执行ð

  • E被执行后,ç

  • B是一个后执行

  • c是一个后执行


  • B,D和C,E是不依赖于彼此,因此它们可以被执行
    在A已经执行完毕后,平行中。


  • D是依赖于B和应后B被执行


  • E是依赖于C和应该℃之后执行。

另外,我需要从每个功能的数据传给有关的功能。所以,应该paasing结果B和C同样B级传递给D和C传递到E

我怎样才能有效地利用异步模块执行它们?

我想,我需要这样的东西,但不能确定,但​​:

  async.waterfall(
  一个: ...,
  async.parallel(
      async.waterfall(
          B,
          ð
      )
      async.waterfall(
          C,
          Ë
      )
   )


解决方案

请尝试使用方法。

For example:

async.auto({
  A: function(callback){
    callback(null, 'A data');
  },
  B: ['A', function(callback, results)
    // do something with results.A;
    callback(null, 'B data');
  }],
  C: ['A', function(callback, results){
    // do something with results.A;
    callback(null, 'C data');
  }],
  D: ['A', 'B', function(callback, results){
    // do something with results.A and results.B;
    callback(null, 'D data');
  }],
  E: ['A', 'C', function(callback, results)
    // do something with results.A and results.C;
    callback(null, 'E data');
  }]
}, function(err, results) {
  console.log('err = ', err);
});

这篇关于复杂的用例Node.js的异步模块的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-24 05:32