Heim >Web-Frontend >js-Tutorial >Wie kann ich warten, bis mehrere JavaScript-Promises abgeschlossen sind, bevor ich fortfahre?

Wie kann ich warten, bis mehrere JavaScript-Promises abgeschlossen sind, bevor ich fortfahre?

Barbara Streisand
Barbara StreisandOriginal
2024-12-19 00:16:09379Durchsuche

How Can I Wait for Multiple JavaScript Promises to Finish Before Continuing?

Warten auf den Abschluss mehrerer asynchroner Aufgaben in JavaScript

Problem:

Sie haben eine Reihe asynchroner Aufgaben (Versprechen). ) und müssen einen Codeblock erst ausführen, wenn alle ausgeführt wurden abgeschlossen.

Lösung:

Verwenden Sie Promise.all, um alle Versprechen in einem einzigen Array zu sammeln und auf deren Lösung oder Ablehnung zu warten.

Umsetzung:

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((e) => {
    // Handle errors here
  });

Überarbeitet doSomeAsyncStuff-Funktion:

function doSomeAsyncStuff() {
  return new Promise((resolve, reject) => {
    const editor = generateCKEditor();
    editor.on('instanceReady', (evt) => {
      doSomeStuff();
      resolve(true);
    })
  });
}

Beispiel:

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((e) => {
      // Handle errors here
    });
}

test();

Das obige ist der detaillierte Inhalt vonWie kann ich warten, bis mehrere JavaScript-Promises abgeschlossen sind, bevor ich fortfahre?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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