Jquery 按顺序运行ajax调用
我有一个动态确定的ajax调用列表,需要一个接一个地进行调用。既然承诺并不是在所有浏览器中都平等地实现,那么有没有一种方法可以在前一个ajax调用完成后进行每个ajax调用 我试过:Jquery 按顺序运行ajax调用,jquery,ajax,promise,Jquery,Ajax,Promise,我有一个动态确定的ajax调用列表,需要一个接一个地进行调用。既然承诺并不是在所有浏览器中都平等地实现,那么有没有一种方法可以在前一个ajax调用完成后进行每个ajax调用 我试过: var favoritesArray = [1,2,3] //dynamically created by user var arrayOfCalls = $.each(favoritesArray, function each(idx) { var favId = favoritesArray[idx];
var favoritesArray = [1,2,3] //dynamically created by user
var arrayOfCalls = $.each(favoritesArray, function each(idx) {
var favId = favoritesArray[idx];
return $.ajax({ url: '/favorites/' + favId, type: 'DELETE' });
});
$.when(arrayOfCalls)
.then(function success() {
doStuff();
});
所有呼叫都会运行,但不要等待前一个呼叫完成。有没有办法做到这一点?您可以使用递归。(我使用setTimeout代替AJAX请求)
函数同步执行(索引,长度){
var favId=favoritesArray[指数];
setTimeout(函数(){
如果(Index不确定您为什么担心它。这些调用似乎都不依赖于以前的调用。$。当
在跨浏览器中保持一致时,但请注意,$不会返回任何内容。因此,每个
数组调用
都将被取消定义。每个调用都会更新相同的列表,如果同时触发调用,则列表中剩余的TEM将不正确且不同,这取决于首先完成的TEM。感谢您关于$的注释。arrayOfcall.reduce((p,c)=>p.then(c),$.when())。然后(function success(){…
@BenjaminGruenbaum,看起来它应该这样做,但没有。
function syncExecute(index,length){
var favId = favoritesArray[index];
setTimeout(function(){
if(index<length){
syncExecute(index+1,length);
console.log(index);
}else{
console.log("All Call Executed");
}
},5000);
}
syncExecute(0,favoritesArray.length);