问候大家,
我想重复调用一个函数,但希望每个调用仅在前一个调用完成时运行。异步是否符合我的需要?或者调用是并行发生的?
谢谢!
加里
问候大家,
我想重复调用一个函数,但希望每个调用仅在前一个调用完成时运行。异步是否符合我的需要?或者调用是并行发生的?
谢谢!
加里
虽然可以满足您的需要,但它会按顺序运行每个功能。在每次运行之前,它都会执行“测试”功能以确保它应该再次运行。
他们的例子:
var count = 0;
async.whilst(
function () { return count < 5; },
function (callback) {
count++;
setTimeout(callback, 1000);
},
function (err) {
// 5 seconds have passed
}
);
异步的 while 应该为您解决问题。在参考已接受答案上的代码之前,请注意您将使用的 async 版本。正如已接受答案中的一条评论所暗示的那样,此循环的结构略有变化,可能不太容易发现。
异步 v2:接受的答案
异步 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
}
);