有几个问题已经被问过这个确切的性质。其中一个没有得到答案,其中一个建议我正在尝试,但没有成功。
这是我想要做的事情:
函数a()将被多次调用1次。 函数b()执行异步调用。
for (i=0; i<=something; i++) {
function a() {
function b(); //makes async call
}
}
// at this point, execution continues,
// even though all function b()'s async
// calls are still "pending".
由于函数b()中的异步调用,函数a()本身,所有实际目的也是异步。
我需要一些方法来了解所有函数b()的异步调用何时完成。
我试过了:
var callCount=0;
for (i=0; i<=something; i++) {
function a() {
callCount++;
function b(callCount);
}
}
然后我有函数b()的异步回调函数减量callCount,并执行以下操作:
var callCount=0;
for (i=0; i<=something; i++) {
function a() {
callCount++;
function b(callCount); // b()'s callback decrements callCount by 1;
}
}
while (callCount > 0) {
}
// now continue
但是在for()循环结束时,callCount仍然包含调用次数,并且从不递减,导致无限循环。
callCount在b()的回调函数中是不可变的吗?
有没有办法检测多个异步调用何时全部完成?我同时使用jquery .ajax()和.get()。
答案 0 :(得分:1)
承诺和推迟介绍之后......你只需要保留一系列承诺并使用$ .when并申请
$.when.apply($, promises).then(function() {
console.log('All ajax calls completed');
});
请点击此working fiddle,然后打开您的控制台。