我有一系列需要按顺序运行的 ajax 调用,但不是同步运行。最好的方法是什么?
我知道我可以$.when().then()
,但这仅适用于两个 ajax 调用,不是吗?理想情况下,我想做类似的事情:
var caller;
for (var i = 0; i < argObjects.length; i++) {
if (typeof caller === 'undefined') {
caller = $.when($.ajax(... data: argObjects[i]...));
}
else {
caller.then($.ajax(... data: argObjects[i]...));
}
}
换句话说,只需添加一系列then
将它们链接在一起。但这是不可能的。有没有另一种方法可以用 jQuery 做到这一点?
重要的是要注意这些调用不能同时运行。我可以按 set 对它们运行一个循环async: false
,但这会在处理不好的情况下从用户手中夺走控制权。
另一种思考方式是在一次通话中发送所有内容......但是我如何在该任务运行时监控它的进度?假设我有 10 周的数据要更新,并且我希望在每周完成时收到通知。如果我发送了 10 个连续的 ajax 调用,每个调用都可以返回并告诉我它已经完成,我可以更新某种进度条。这确实是这里的最终目标。
在此期间,我将继续尝试围绕 jQuery 中的延迟。