Heim > Web-Frontend > js-Tutorial > Können Node.js (ES7)-Versprechen „Fire and Forget' asynchron implementieren und welche Risiken bestehen?

Können Node.js (ES7)-Versprechen „Fire and Forget' asynchron implementieren und welche Risiken bestehen?

Susan Sarandon
Freigeben: 2024-11-27 13:23:18
Original
802 Leute haben es durchsucht

Can Node.js (ES7) Promises Implement

Fire and Forget Promises in Node.js (ES7)

Bei der asynchronen Programmierung ist es üblich, Aufgaben aufzuteilen, ohne auf ihre Ergebnisse zu warten . Können Sie dies mit Versprechen in Node.js (ES7) tun?

Frage:

Bedenken Sie den folgenden Codeausschnitt:

redisClientAsync.delAsync('key');
return await someOtherAsyncFunction();
Nach dem Login kopieren

Kann Sie wickeln die erste Zeile in eine asynchrone Funktion ein, ohne darauf zu warten? Was passiert, wenn Sie dies tun?

Antwort:

Ja, Sie können die beiden asynchronen Funktionen parallel ausführen, ohne auf den delAsync-Aufruf zu warten. Indem Sie das Versprechen erstellen und verwerfen, „feuern Sie es ab und vergessen es“.

Warum ist das nicht ideal?

Dieser Ansatz hat einen erheblichen Nachteil. Wenn das delAsync-Versprechen abgelehnt wird, werden Sie nicht benachrichtigt. Dies könnte zu unbehandelten Ablehnungsfehlern und potenziellen Abstürzen führen.

Alternative Ansätze:

  • Warten Sie auf das Versprechen:Wenn Sie es bearbeiten möchten Nebenwirkungen oder Ausnahmen, Sie müssen das Versprechen abwarten. Wenn Sie das Ergebnis jedoch nicht benötigen, können Sie es mit void (await someAsyncFunction()) verwerfen.
  • Ausnahmen abfangen: Wenn Ihnen das Ergebnis egal ist, Sie es aber möchten Um Ausnahmen abzufangen, können Sie ...someAsyncFunction().catch(function ignorieren() {}) verwenden....
  • Funktionen ausführen in parallel:Um die delAsync- und someOtherAsyncFunction-Aufgaben gleichzeitig auszuführen, können Sie Promise.all() verwenden:

    var [_, res] = await Promise.all([
      someAsyncFunction(), // result is ignored, exceptions aren't
      someOtherAsyncFunction()
    ]);
    return res;
    Nach dem Login kopieren

    In diesem Fall wird das Ergebnis von delAsync ignoriert, es gibt jedoch weiterhin Ausnahmen geworfen.

Fazit:

Während „Feuer und Vergessen“ praktisch sein kann, ist es wichtig, die möglichen Konsequenzen zu berücksichtigen. Indem Sie Ihre Anforderungen klar definieren (Warten, Ergebnisbehandlung und Ausnahmeabfangen), können Sie eine angemessene Behandlung asynchroner Aufgaben in Ihren Node.js-Anwendungen sicherstellen.

Das obige ist der detaillierte Inhalt vonKönnen Node.js (ES7)-Versprechen „Fire and Forget' asynchron implementieren und welche Risiken bestehen?. 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