0

我有一个在循环中多次调用异步函数的函数。

function myFunc() {
    var things = [1, 2, 3, 4, 5];

    $.each(things, asyncFunc);

    alert('Things ' + things.join() + ' have all been processed.');
}

function asyncFunc(key, value) {
    $.post('api.php', value: thing);
}

我只想在所有异步调用都完成后继续。

我可以asyncFunc返回一个延迟对象,并调用.resolve()$.post.done方法,但是我怎么能阻止.each循环并仅在asyncFunc完成时继续?

只有当所有调用都完成后,还有哪些其他方法可以继续asyncFunc

4

1 回答 1

2
  1. 将回调传递给asyncFunc
  2. 回调中,有一个基于things.length
  3. 计算回调被调用的次数
  4. 如果计数器指示更多,结束回调
  5. 如果计数器指示这是最后一次,则继续调用

例如回调

var count = things.length,
    callback = function () {
        if (0<--count) return;
        // do stuff
    };
于 2013-08-19T13:07:47.090 回答