Behandeln asynchroner Ausnahmen mit Bluebird Promises
Bei der Arbeit mit asynchronen Routinen kann die Ausnahmebehandlung schwierig zu verwalten sein. Versprechen, eine Schlüsselfunktion von Bluebird.js, bieten eine strukturierte Möglichkeit, asynchrone Ausnahmen zu behandeln.
Die Herausforderung
In Ihrem Codebeispiel wird ein setTimeout in a verwendet unverbindlicher Rückruf. Wenn innerhalb dieses Rückrufs ein Fehler ausgelöst wird, wird Bluebirds Catch nicht ausgelöst, was zum Absturz des Programms führt.
Bluebirds Promise-Struktur
Promises fangen Ausnahmen ab, die innerhalb ihres Rückrufs ausgelöst werden Funktionen (then/catch/Promise-Konstruktor). Um Ausnahmen von asynchronen Rückrufen zu behandeln, ist es wichtig, sie in ein Versprechen zu packen.
Elegante Ausnahmebehandlung
In Ihrem Szenario können Sie den setTimeout-Rückruf in ein Versprechen einschließen . Der Catch-Block fängt dann den Fehler ab:
<code class="javascript">function getPromise() { return new Promise(function(resolve, reject) { setTimeout(resolve, 500); }).then(function() { console.log("hihihihi"); throw new Error("Oh no!"); }); }</code>
Ablehnung ist der Schlüssel
Wirf niemals Fehler direkt innerhalb von Non-Promise-Callbacks. Lehnen Sie stattdessen das umgebende Versprechen ab. Verwenden Sie bei Bedarf Try-Catch, um eine ordnungsgemäße Behandlung sicherzustellen.
<code class="javascript">function getPromise() { return new Promise(function(resolve, reject) { try { setTimeout(resolve, 500); } catch (err) { reject(err); } }); }</code>
Durch die Einhaltung dieser Prinzipien können Sie eine ordnungsgemäße Ausnahmebehandlung sowohl in Node.js als auch im Browser sicherstellen, selbst bei betrügerischen asynchronen Rückrufen.
Das obige ist der detaillierte Inhalt vonWie kann ich asynchrone Ausnahmen mit Bluebird Promises behandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!