Node.js 如何实现一组异步任务,并将某些条件串联起来?
我必须在nodejs中编写以下代码: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())
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
由您控制,我建议您让它们返回承诺。与回调相比,承诺提供了更好的流控制机制。