Javascript中多个异步函数调用的优雅方式
我需要多次调用同一个异步函数,但直到一次调用完成(即执行回调函数时)。因此,我的代码如下所示:Javascript中多个异步函数调用的优雅方式,javascript,asynchronous,Javascript,Asynchronous,我需要多次调用同一个异步函数,但直到一次调用完成(即执行回调函数时)。因此,我的代码如下所示: syncFunc(a, function() { syncFunc(b, function() { syncFunc(c, function() { syncFunc(.....) }); }); }); 现在是否有可能以某种方式缩短这个时间?我的第一个想法是使用for循环,比如: syncParams = [a, b, c,
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;
}
}
}
syncParams=[a,b,c,…];
对于(变量i=0;i++){
syncFunc(syncParams[i],function()){
如果(i
但显然这不起作用,因为没有连接到循环的continue和break。我的另一个想法是使用一个间隔来检查每秒一次异步调用是否完成,然后使用下一个参数调用下一个异步调用,但这似乎太复杂了。有没有不使用库的简单方法
编辑:因为没有人解除对库问题的限制:我正在开发一个PhoneGap移动应用程序,使用我目前正在使用的IDE,包含第三方库并不是一件令人愉快的事情。我只是好奇这将如何工作。我看到您每次都想用不同的参数调用函数。然后是async.for每个系列都是最合适的 如果希望每次都使用相同的参数调用函数,async.while可以很好地工作
@Jack提到,这个问题有一个很好的答案,可以自己解决:的可能重复;这是关于Ajax的,但答案也应该适用于这里。解决这个问题的理想方法是承诺制定者。如果你不想使用库(我不理解),你需要为自己写一个。那是作弊,因为它使用了“某个库”;)哦,等等,我错过了这个问题。我想它说的是:一个使用图书馆的简单方法。无论什么我不理解人们使用图书馆的问题。或者偷一段代码,若你们真的负担不起全部加载的话。我同意,并没有必要自己改造每一个轮子:)