Node.js 如何实现一组异步任务,并将某些条件串联起来?

Node.js 如何实现一组异步任务,并将某些条件串联起来?,node.js,asynchronous,q,async.js,Node.js,Asynchronous,Q,Async.js,我必须在nodejs中编写以下代码: val1 = async1() if(val1 == 0){ val1 = async2() } val2 = async3(val1) 在上面的代码中,val1和val2是从异步函数async1()、async2()和async3()返回的值。如何实现它?您可以使用 上述伪代码可以通过方法实现 示例实现: async.waterfall([ function(callback){ callback(null, async1())

我必须在nodejs中编写以下代码:

val1 = async1()
if(val1 == 0){
 val1 = async2()
}
val2 = async3(val1)
在上面的代码中,
val1
val2
是从异步函数
async1()
async2()
async3()
返回的值。如何实现它?

您可以使用

上述伪代码可以通过方法实现

示例实现:

async.waterfall([
    function(callback){
        callback(null, async1());
    },
    function(val1, callback){
        if(val1==0){
            callback(null, async2());
        } else {
            callback(null, val1);
        }
    }, function(val1, callback){
        callback(null, async3(val1));
    }
    ], function(error, val2){
            <you get val2 here>
});
async.瀑布([
函数(回调){
回调(null,async1());
},
函数(val1,回调){
if(val1==0){
回调(null,async2());
}否则{
回调(null,val1);
}
},函数(val1,回调){
回调(null,async3(val1));
}
],函数(错误,val2){
});

val1
是承诺吗?
async1
是否接受回调?显示实际代码。@naomik实际上上面是一个伪代码
val1
是一个整数值,
async1
可以设计为接受回调。如果
async1
async2
async3
由您控制,我建议您让它们返回承诺。与回调相比,承诺提供了更好的流控制机制。