<分区>
我查看了许多类似的问题,但建议的解决方案并非在所有情况下都能按预期工作。当所有 ajax 调用都成功完成时,以下代码工作正常,但如果任何 ajax 调用碰巧失败,则立即调用 onComplete
:
var deferredArray = $('.preload').map(function() {
return $.get(this.href)
});
$.when.apply($, deferredArray).then(onComplete, onComplete);
所以可能有两种情况:
- 所有延迟调用都成功,然后调用
onComplete
- 工作正常; - 一些延迟调用失败(返回 HTTP 400 错误请求),然后立即调用
onComplete
,而不是等待其他延迟调用。
第二种情况代表了我的问题。在调用 onComplete
之前,无论状态如何,它都应始终等待所有调用完成。
我使用框架中内置的 jQuery 1.7.1。如果问题是版本问题,我可以升级,但我更愿意保留当前版本。