我正在尝试遵循以下代码
async.waterfall([
a1, b1, c1
], function (err, result) {
});
function a1(callback){
// long processing external call
setTimeout(function() {
console.log('delayed str');
}, 5000);
callback(null, 'one', 'two');
}
function b1(arg1, arg2, callback){
console.log(arg1)
callback(null, 'three');
}
function c1(arg1, callback){
console.log(arg1)
callback(null, 'done');
}
我期望以下输出
delayed str
one
three
但是我得到了以下输出
one
three
delayed str
如何使用Node.js异步模块实现正确的同步函数调用
最佳答案
您需要将callback(null, 'one', 'two');
调用移到超时中,以便在超时时间后调用下一个函数:
async.waterfall([
a1, b1, c1
], function (err, result) {
});
function a1(callback){
setTimeout(function() {
console.log('delayed str');
callback(null, 'one', 'two');
}, 5000);
}
function b1(arg1, arg2, callback){
console.log(arg1)
callback(null, 'three');
}
function c1(arg1, callback){
console.log(arg1)
callback(null, 'done');
}
关于javascript - 使用异步 waterfall 图模块的node.js同步调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28241032/