Sie können Versprechen (ES6) verwenden, um Ihre Anforderungen in die Warteschlange zu stellen, und fortfahren, sobald die Warteschlange gelöscht wurde.
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');
})
weitere Informationen über Versprechungen können hier https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise
finden Sie können auch eine polyfill für ältere Browser verwenden müssen, die Sie hier finden können https://www.promisejs.org/
es zu einem gewissen Grad woked. Es heißt "Fehler ist nicht definiert" –
das ist nur ein Beispiel, das von Ihrem Ajax Anruf kommen sollte. Wenn Ihr Ajax-Aufruf einen Fehler zurückgibt, fügen Sie etwas hinzu wie 'var error = data.error;' Das wird die Fehlervariable definieren. Abhängig davon, ob es wahr oder falsch ist, wird das Versprechen gelöst oder abgelehnt werden. – AVDW
Ich habe nicht verstanden, abzulehnen und zu lösen und die Parameter Daten und Fehler. –