我有3个阵列,每个10个网址。
我想要的是:
首先执行第一个数组中url的所有ajax请求。
然后执行第二个数组网址的ajax请求
并且在最后一个第三个数组请求ursl被执行。
答案 0 :(得分:0)
您可以使用promises(ES6)对请求进行排队,并在清除队列后继续。
var array1 = ['url1', 'url2', 'url3'];
var array2 = ['url1', 'url2', 'url3', 'url4'];
var array3 = ['url1', 'url2'];
function createPromiseArray(list){
return new Promise(function(resolve, reject){
var queue = [];
for(var i=0; list.length > i; i++){
queue.push(doRequest(list[i]));
}
Promise.all(queue).then(function(){
resolve();
});
}
}
function doRequest(url){
return new Promise(function(resolve, reject){
// do ajax request
if (!error) {
resolve(data);
}else{
reject(data);
}
}
}
createPromiseArray(array1)
.then(function(){
createPromiseArray(array2);
})
.then(function(){
createPromiseArray(array3);
})
.then(function(){
console.log('all done');
})
有关承诺的更多信息可以在https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise
找到您可能还需要为旧浏览器使用填充功能,您可以在此处找到https://www.promisejs.org/