Heim > Artikel > Web-Frontend > Promise wird asynchron implementiert
Dieses Mal bringe ich Ihnen das Versprechen, eine asynchrone Implementierung zu implementieren. Was sind die Vorsichtsmaßnahmen für das Versprechen, eine asynchrone Implementierung zu implementieren? Das Folgende ist ein praktischer Fall.
Um die Lesbarkeit zu gewährleisten, verwendet dieser Artikel eine freie Übersetzung anstelle einer wörtlichen Übersetzung und der Quellcode wurde umfassend geändert. Darüber hinaus liegt das Urheberrecht dieses Artikels beim ursprünglichen Autor und die Übersetzung dient nur zum Lernen.
Wenn Sie asynchronen Code mit Promise schreiben, verwenden Sie Reject, um Fehler zu behandeln. Manchmal ignorieren Entwickler dies, was dazu führt, dass einige Fehler nicht behandelt werden. Zum Beispiel:function main() { asyncFunc() .then(···) .then(() => console.log('Done!')); }Da der Fehler nicht mit der Catch-Methode erfasst wird, wird der ausgegebene Fehler nicht behandelt, wenn die Funktion asyncFunc() ihn ablehnt. In diesem Blog erfahren Sie, wie Sie nicht behandelte Promise-Fehler in Browsern bzw.
Node.js abfangen.
Unbehandelter Promise-Fehler im Browser
Einige Browser (z. B. Chrome) sind in der Lage, nicht behandelte Promise-Fehler abzufangen.unbehandelte Ablehnung
Hören Sie sich das unhandledrejection-Ereignis an, um nicht behandelte Promise-Fehler zu erfassen:
window.addEventListener('unhandledrejection', event => ···);Bei diesem Ereignis handelt es sich um eine PromiseRejectionEvent-Instanz, die über die beiden wichtigsten
-Attribute verfügt:
Versprechen: Versprechen ablehnen Grund: Ablehnungswert des Versprechens Beispielcode:window.addEventListener('unhandledrejection', event => { console.log(event.reason); // 打印"Hello, Fundebug!" }); function foo() { Promise.reject('Hello, Fundebug!'); } foo();Das Ablehnung behandelt Wenn ein Promise-Fehler zunächst nicht, aber später behandelt wird, wird das Rejectionhandled-Ereignis ausgelöst: window.addEventListener('rejectionhandled', event => ···); Dieses Ereignis ist eine Instanz von PromiseRejectionEvent. Beispielcode:
window.addEventListener('unhandledrejection', event => { console.log(event.reason); // 打印"Hello, Fundebug!" }); window.addEventListener('rejectionhandled', event => { console.log('rejection handled'); // 1秒后打印"rejection handled" }); function foo() { return Promise.reject('Hello, Fundebug!'); } var r = foo(); setTimeout(() => { r.catch(e =>{}); }, 1000);
Unbehandelter Promise-Fehler in Node.js
Hören Sie sich das unhandledRejection-Ereignis an, um nicht behandelte Promise-Fehler zu erfassen: Process.on('unhandledRejection', (Grund, Versprechen) => ···); Beispielcode:process.on('unhandledRejection', reason => { console.log(reason); // 打印"Hello, Fundebug!" }); function foo() { Promise.reject('Hello, Fundebug!'); } foo();
Hinweis: Node.js v6.6.0+ meldet standardmäßig nicht behandelte Promise-Fehler, daher ist es in Ordnung, das unhandledrejection-Ereignis nicht abzuhören.
Das Node.js-Fehlerüberwachungs-Plug-in von Fundebug lauscht auf das unhandledRejection-Ereignis, sodass es automatisch unbehandelte Promise-Fehler erkennen kann. Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website! Empfohlene Lektüre:Das obige ist der detaillierte Inhalt vonPromise wird asynchron implementiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!