Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript中多个异步函数调用的优雅方式_Javascript_Asynchronous - Fatal编程技术网

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的,但答案也应该适用于这里。解决这个问题的理想方法是承诺制定者。如果你不想使用库(我不理解),你需要为自己写一个。那是作弊,因为它使用了“某个库”;)哦,等等,我错过了这个问题。我想它说的是:一个使用图书馆的简单方法。无论什么我不理解人们使用图书馆的问题。或者偷一段代码,若你们真的负担不起全部加载的话。我同意,并没有必要自己改造每一个轮子:)