2016-03-19 19 views
0

Ich habe 3 Arrays mit je 10 URLs.Ausführen von Gruppen von AJAX-Anfragen nacheinander

Was ich will, ist:

Zuerst alle AJAX-Anfragen von URLs in der ersten Anordnung ausgeführt werden sollen.

Dann Ajax Anfragen der zweiten Anordnung alphanummerischen

und in dem letzten der dritten Array-Anfragen ausgeführt ursl ausgeführt werden sollen.

Antwort

0

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/

+0

es zu einem gewissen Grad woked. Es heißt "Fehler ist nicht definiert" –

+0

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

+0

Ich habe nicht verstanden, abzulehnen und zu lösen und die Parameter Daten und Fehler. –

Verwandte Themen