在尝试执行一组AJAX请求时,大多数时候至少有一个请求总是得到一个挂起的响应,这会导致请求循环,直到它获得成功的响应。请注意我使用jQuery.when
,这样我就可以确保两个请求都已执行。
上述行为导致:
jQuery.always
执行次数与执行请求相同var request = [];
request.push(getProductPrice().done(
function(price) {
updateProductPrice(price);
}
);
request.push(getProductInfo().done(
function(information) {
updateProductInformation(information);
}
);
jQuery.when.apply(undefined, request).always(function() {
doSomeStuff1();
doSomeStuff2();
...
...
...
doSomeStuffN();
});
function updateProductPrice(obj) {
return jQuery.get(...);
}
function updateProductInformation(obj) {
return jQuery.get(...);
}
jQuery.when
尝试释放AJAX请求以启动回调吗?async: false
。通过挂起状态,我的意思是网络浏览器对我的请求给出的响应,这只是ajax调用等待它的响应。主要问题在于如何处理这些AJAX请求,我注意到函数updateProdcutPrice()
和updateProductInformation()
被调用N次,直到服务器的响应成功,这导致函数在.always()
的回调中声明了在updateProdcutPrice()
和updateProductInformation()
上执行的请求也被多次调用。