nodejs Async的同时

时间:2013-03-13 18:13:50

标签: node.js asynchronous asynccallback

全心全意,

我想重复调用一个函数,但希望每个调用仅在前一个调用完成时运行。 Async是否适合我的需要?或者这些呼叫是并行发生的吗?

谢谢!

加里

3 个答案:

答案 0 :(得分:27)

虽然会做你需要的,但它会串联运行每个功能。在每次运行之前,它将执行“测试”功能以确保它应该再次运行。

他们的例子:

var count = 0;

async.whilst(
    function () { return count < 5; },
    function (callback) {
        count++;
        setTimeout(callback, 1000);
    },
    function (err) {
        // 5 seconds have passed
    }
);

答案 1 :(得分:1)

As Chad noted,Async的whilst将完成这项工作。

您可能需要考虑Async的until(与while相反)。两者都做同样的工作,但关键的区别是:

    每次测试传递 时,
  • async.whilst都会调用该函数 每次测试失败时,
  • async.until都会调用该函数

答案 2 :(得分:0)

异步的 while 应该可以为您解决问题。在参考已接受答案的代码之前,请注意您将使用的异步版本。正如已接受答案中的一条评论所暗示的那样,此循环的结构略有变化,可能不太容易发现。

异步 ​​v2:Accepted Answer

异步 ​​v3:https://caolan.github.io/async/v3/docs.html#whilst

他们的例子:

var count = 0;
async.whilst(
    function test(cb) { cb(null, count < 5); },
    function iter(callback) {
        count++;
        setTimeout(function() {
            callback(null, count);
        }, 1000);
    },
    function (err, n) {
        // 5 seconds have passed, n = 5
    }
);