如何在循环中的nodejs中执行一组异步任务?

时间:2015-06-24 07:09:47

标签: javascript node.js asynchronous

我想在循环中重复执行一组异步任务。我尝试使用async库的瀑布方法来执行类似

的操作
while(somethingIsTrue) {
     async.waterfall([
         function(callback) { ... },
         function(callback) { ... },

     ], function(err) {
         ...
        }
     );
}

我遇到的问题是第一个异步函数从未被调度或者更确切地执行并且循环继续运行,显然是因为循环没有等待异步函数完成。我不太熟悉异步编程,我需要帮助来提出一些模式来解决这个问题。

1 个答案:

答案 0 :(得分:1)

尝试半递归解决方案,例如

function again_and_again(callback) {
    if (!somethingIsTrue) return;
    async.waterfall([
         function(callback) { ... },
         function(callback) { ... },
    ], function(err, result) {
        if (err) return callback(err);
        again_and_again(callback);
    });
}

这个想法是等待瀑布完成,然后到达回调,并重复"循环"再次致电again_and_again