1

我需要多次调用同一个异步函数,但直到一个调用完成(即执行回调函数时)。所以我的代码如下所示:

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;
        }
    }
}

但显然这不起作用,因为没有连接到循环的继续和中断。我的另一个想法是使用间隔来检查一个异步调用是否完成,然后使用 next 参数调用下一个,但这似乎太复杂了。有没有不使用某些库的简单方法?

编辑:因为没有人理解库问题:我正在开发一个 PhoneGap 移动应用程序,并且使用我目前正在使用的 IDE 包含第三方库并不是那么愉快。我也很好奇这将如何工作。

4

1 回答 1

0

我看到您每次都想使用不同的参数调用该函数。那么 async.forEachSeries 将是最合适的。

如果你想每次都用相同的参数调用函数,async.whilst 会很好用。https://github.com/caolan/async/#whilsttest-fn-callback

@Jack 提到,这个问题有一个很好的答案:如何同步 JavaScript 回调?

于 2013-05-14T13:40:49.097 回答