我需要多次调用相同的异步函数,但是直到一个调用完成(即执行回调函数时)。所以我的代码看起来像这样:
syncFunc(a, function() {
syncFunc(b, function() {
syncFunc(c, function() {
syncFunc(.....)
});
});
});
现在可以以某种方式缩短这个吗?我的第一个想法是使用for循环,如:
syncParams = [a, b, c, ...];
for(var i = 0;; i++) {
syncFunc(syncParams[i], function() {
if(i < syncParams.length - 1) {
alert('finished');
break;
} else {
continue;
}
}
}
但显然这不起作用,因为没有连接继续和中断到循环。我的另一个想法是,如果一个异步调用完成,则使用间隔检查每秒,然后使用下一个参数调用下一个,但这看起来太复杂了。没有使用某些库有什么简单的方法吗?
编辑:因为没有人理解库问题:我正在开发一个PhoneGap移动应用程序,而我正在使用它的IDE并不是要包含第三方库。我也很好奇这是如何工作的。
答案 0 :(得分:0)
我看到你想每次用不同的参数调用该函数。然后async.forEachSeries将是最合适的。
如果你想每次使用相同的参数调用函数,async.whilst会运行良好。 https://github.com/caolan/async/#whilsttest-fn-callback
@Jack提到,这个问题可以自己做一个很好的答案:How to synch JavaScript callbacks?