【发布时间】:2017-02-21 03:41:05
【问题描述】:
所以一个 XHR 在一个循环中运行,我想在所有 XHR 完成后执行一个函数,我尝试了如下承诺。
var promises = [];
for(var i=0;i<5;i++){
promise = $.ajax({
type: "POST",
url : data_url,
data:pdata
});
promises.push(promise);
}
$.when(promises).then(function(){
window.location.href = '/cart?edit_order=true'
})
问题是重定向发生在 AJAX 完成之前,我错过了什么?
【问题讨论】:
-
我看到您在标题中指定了 jQuery,但仅出于历史目的,您可以以“更好”的方式执行此操作,更好是指更好的可读性和可扩展性。
q.all([loadSomething(), loadAnotherThing()]) .spread(function(something, another) { DoSomethingOnThem(something, another); });其中loadSomething(), loadAnotherThing()是两个承诺,q.all来自以下承诺库:github.com/kriskowal/q
标签: javascript jquery promise