Heim >Web-Frontend >js-Tutorial >Lösen Sie das Problem der inkonsistenten Reihenfolge asynchroner Anforderungen in der for-Schleife
Lösen Sie das Problem der inkonsistenten Reihenfolge asynchroner Anforderungen in der for-Schleife
Bei der Arbeit ist ein Problem aufgetreten
For-Schleife und dann eine zweite Anfrage für die Schleifen-ID stellen
Dies führt zu einem Problem
Die Rückgabereihenfolge des Anforderungsergebnisses ist inkonsistent
Grund: Asynchron Anfragen werden Das Rückrufereignis wird in die Mikrotask-Ereigniswarteschlange gestellt und die Mikrotask wird ausgeführt, nachdem die Makrotask ausgeführt wurde. Weitere Informationen finden Sie im Ereigniswarteschlangenmechanismus
[Verwandte Kursempfehlungen: JavaScript-Video Tutorial]
Lösung:
Erstellen Sie eine Schleifenanforderung über die map-Methode
Kapseln Sie die asynchrone Anforderungsmethode und geben Sie ein Versprechen
zurück. Dadurch wird ein Array mit mehreren Versprechen
zurückgegeben, das das Versprechen durch das schließt Promise.all()-Methode in eine neue promise-Instanz
// 通过Promise把所有的异步请求放进事件队列中 getInfo(item ,index) { const ms = 1000 * Math.ceil(Math.random() * 3) return new Promise((resolve,reject) => { setTimeout(() => { axios.get(id).then((result) => { resolve(result) }) }, ms) }) } // 返回多个promise let promise = arr.map((item,index) = > { arr.forEach((item, index) => { return getInfo(item, index) }) }) // 对返回的promise数组进行操作 Peomise.all(promise).then((allData) => { arr.forEach((item, index) => { // ...... }) })
Dieser Artikel stammt aus der Spalte js-Tutorial, willkommen zum Lernen!
Das obige ist der detaillierte Inhalt vonLösen Sie das Problem der inkonsistenten Reihenfolge asynchroner Anforderungen in der for-Schleife. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!