Heim >Web-Frontend >js-Tutorial >Können Node.js (ES7)-Versprechen „Fire and Forget' asynchron implementieren und welche Risiken bestehen?
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();
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:
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;
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!