我正在尝试遵循以下代码

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/

10-12 00:09
查看更多