Javascript Node.js异步模块的复杂用例
我已经开始使用Node.js作为我的后端来执行不同的操作,如DB查询/API调用等。我正在阅读Node.js的相关内容,并决定尝试一下。它一直适用于一些简单的用例,在这些用例中,我希望并行或串行执行一些任务,但不知何故,我遇到了一个需求,需要异步的串行/并行/瀑布技术的最佳组合 用例: 我使用回调实现了以下功能:Javascript Node.js异步模块的复杂用例,javascript,node.js,asynchronous,async.js,Javascript,Node.js,Asynchronous,Async.js,我已经开始使用Node.js作为我的后端来执行不同的操作,如DB查询/API调用等。我正在阅读Node.js的相关内容,并决定尝试一下。它一直适用于一些简单的用例,在这些用例中,我希望并行或串行执行一些任务,但不知何故,我遇到了一个需求,需要异步的串行/并行/瀑布技术的最佳组合 用例: 我使用回调实现了以下功能: function A(input, callback) { ... callback(err,result); } function B(input1, input2, callb
function A(input, callback) {
...
callback(err,result);
}
function B(input1, input2, callback) {
...
callback(err,result);
}
function C(input, callback) {
...
callback(err,result);
}
function D(input, callback) {
...
callback(err,result);
}
function E(input, callback) {
...
callback(err,result);
}
他们的执行顺序应该是:
A->[B->D]A->[C->E]
- B、 D、C、E在A之后执行
- D在B之后执行
- E在C之后执行
- B在A之后执行
- C在A之后执行
- B、 D和C,E彼此不依赖,因此可以执行它们 在A完成执行后并行
- D依赖于B,应该在B之后执行
- E依赖于C,应该在C之后执行
async.waterfall(
A: ...,
async.parallel(
async.waterfall (
B,
D
),
async.waterfall (
C,
E
)
)
)
尝试使用这种方法
根据任务中的功能要求,确定运行这些功能的最佳顺序。每个函数可以选择依赖于首先完成的其他函数,并且每个函数在满足其需求后立即运行
函数还接收一个对象,其中包含迄今为止已完成的函数的结果
例如:
async.auto({
A: function (callback) {
callback(null, 'A data');
},
B: ['A', function (results, callback) {
// do something with results.A;
callback(null, 'B data');
}],
C: ['A', function (results, callback) {
// do something with results.A;
callback(null, 'C data');
}],
D: ['A', 'B', function (results, callback) {
// do something with results.A and results.B;
callback(null, 'D data');
}],
E: ['A', 'C', function (results, callback) {
// do something with results.A and results.C;
callback(null, 'E data');
}]
}, function (err, results) {
console.log('err = ', err);
});
为什么不切换到基于标准的实现->ES6承诺?您好。我们尽量鼓励提出尽可能简洁的问题。因此,如果你有在问题中加上“谢谢”、“请帮助我”等的习惯,那么你应该知道这些问题通常被认为是噪音,并且经常被删掉。@halfer:我会在以后的帖子中记住这一点。