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

angryTom
Freigeben: 2019-12-17 16:56:05
nach vorne
3084 Leute haben es durchsucht

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) => {
        // ......
    })
})
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:cnblogs.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage