Вы можете использовать обещания (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
Вы также, возможно, потребуется использовать polyfill для старых браузеров, которые вы можете найти здесь https://www.promisejs.org/
это woked до некоторой степени. В нем говорится, что «ошибка не определена» –
это просто пример, который должен исходить от вашего вызова ajax. Когда ваш вызов ajax возвращает ошибку, добавьте что-то вроде 'var error = data.error;' Это определит переменную ошибки. В зависимости от того, будет ли оно истинным или ложным, будет определено обещание, разрешающее или отклоняемое. – AVDW
Я не понял отклонение и разрешение, а также данные параметров и ошибки. –