产生异步执行javascript

Yield async execution javascript

本文关键字:javascript 执行 异步      更新时间:2023-09-26

我想用代码来说明这个问题:

var async1 = f1(params, cb);
var async2 = f2(params, cb);

现在我可以通过瀑布异步进程调用async1,如下所示:

async.waterfall([
 function(cb){
   async1(params, cb);
   async2(params, cb);
},
//default process
function(result, cb){
    //some code here and then
    cb(null, result);
}
], done);

我的问题是如何等待async1完成done回调,以便调用async2。这两个任务都需要运行默认进程和已完成的回调。

如果有一种方式/设计模式,我可以运行async1,并且在它完成后,我可以在相同的瀑布异步函数中运行async2?两个异步函数都是完成默认进程和完成回调所必需的。

谢谢。

您可以通过使用回调函数来实现这一点。考虑以下内容:

// When you're defining this function, give it a callback parameter
function async1(params, cb, callback){
    ...
    // Call the callback function when this process is complete
    callback();
}
...
// Then call your functions something like this
async1(params, cb, function(){
    async2(params, cb);
});

这也可以通过使用Promises来实现。承诺是相同的想法,只是做得有点不同。