Heim > Web-Frontend > js-Tutorial > Wie kann die Ausführung angehalten werden, bis mehrere Versprechen gelöst sind?

Wie kann die Ausführung angehalten werden, bis mehrere Versprechen gelöst sind?

Patricia Arquette
Freigeben: 2024-12-27 03:02:13
Original
605 Leute haben es durchsucht

How to Pause Execution Until Multiple Promises Resolve?

Mehrere Versprechen zurückgeben und Ausführung anhalten, bis alles abgeschlossen ist

Sie müssen mehrere asynchrone Vorgänge mit einer Methode verarbeiten, die Versprechen zurückgibt. Nachdem diese Vorgänge abgeschlossen sind, möchten Sie erst dann einen weiteren Codesatz ausführen, wenn alle Versprechen aufgelöst wurden.

Versprechen in doSomeAsyncStuff()

Ihre Funktion doSomeAsyncStuff() muss dies tun ein Versprechen zurückgeben. Dieses Versprechen spiegelt den Abschluss der asynchronen Aufgabe wider:

function doSomeAsyncStuff() {
    return new Promise((resolve, reject) => {
        var editor = generateCKEditor();
        editor.on('instanceReady', () => {
            doSomeStuff();
            resolve(true);
        });
    });
}
Nach dem Login kopieren

Verwenden von Promise.all()

Sobald Ihre asynchrone Funktion ein Promise zurückgibt, können Sie Promise verwenden. all(), um diese Versprechen zu einem einzigen zusammenzufassen Versprechen:

const promises = [];

for (let i = 0; i < 5; i++) {
    promises.push(doSomeAsyncStuff());
}

Promise.all(promises)
    .then(() => {
        for (let i = 0; i < 5; i++) {
            doSomeStuffOnlyWhenTheAsyncStuffIsFinish();
        }
    })
    .catch((error) => {
        // Handle errors here
    });
Nach dem Login kopieren

Beispiel

Unten ist ein Beispiel, das eine Nachricht protokolliert, nachdem alle fünf asynchronen Aufgaben abgeschlossen wurden:

function doSomethingAsync(value) {
    return new Promise((resolve) => {
        setTimeout(() => {
            console.log("Resolving " + value);
            resolve(value);
        }, Math.floor(Math.random() * 1000));
    });
}

function test() {
    const promises = [];

    for (let i = 0; i < 5; i++) {
        promises.push(doSomethingAsync(i));
    }

    Promise.all(promises)
        .then((results) => {
            console.log("All done", results);
        })
        .catch((error) => {
            // Handle errors here
        });
}

test();
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann die Ausführung angehalten werden, bis mehrere Versprechen gelöst sind?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage