本文介绍了复杂的用例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的异步模块的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!