国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

捕獲未處理的Promise錯誤方法

2019-11-19 15:10:58
字體:
來源:轉載
供稿:網友

為了保證可讀性,本文采用意譯而非直譯,并且對源代碼進行了大量修改。另外,本文版權歸原作者所有,翻譯僅用于學習。

使用Promise編寫異步代碼時,使用reject來處理錯誤。有時,開發者通常會忽略這一點,導致一些錯誤沒有得到處理。例如:

function main() {asyncFunc().then(???).then(() => console.log('Done!'));}

由于沒有使用catch方法捕獲錯誤,當asyncFunc()函數reject時,拋出的錯誤則沒有被處理。

這篇博客將分別介紹在瀏覽器與Node.js中,如何捕獲那些未處理的Promise錯誤。

瀏覽器中未處理的Promise錯誤

一些瀏覽器(例如Chrome)能夠捕獲未處理的Promise錯誤。

unhandledrejection

監聽unhandledrejection事件,即可捕獲到未處理的Promise錯誤:

window.addEventListener('unhandledrejection', event => ???);

這個事件是PromiseRejectionEvent實例,它有2個最重要的屬性:

promise: reject的Promise

reason: Promise的reject值

示例代碼:

window.addEventListener('unhandledrejection', event =>{console.log(event.reason); // 打印"Hello, Fundebug!"}); function foo(){Promise.reject('Hello, Fundebug!');} foo();

Fundebug的JavaScript錯誤監控插件監聽了unhandledrejection事件,因此可以自動捕獲未處理Promise錯誤。

rejectionhandled

當一個Promise錯誤最初未被處理,但是稍后又得到了處理,則會觸發rejectionhandled事件:

window.addEventListener('rejectionhandled', event => ???);

這個事件是PromiseRejectionEvent實例。

示例代碼:

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);

Node.js中未處理的Promise錯誤

監聽unhandledRejection事件,即可捕獲到未處理的Promise錯誤:

process.on('unhandledRejection', (reason, promise) => ???);

示例代碼:

process.on('unhandledRejection', reason =>{console.log(reason); // 打印"Hello, Fundebug!"}); function foo(){Promise.reject('Hello, Fundebug!');} foo();

注: Node.js v6.6.0+ 默認會報告未處理的Promise錯誤,因此不去監聽unhandledrejection事件也沒問題。

Fundebug的Node.js錯誤監控插件監聽了unhandledRejection事件,因此可以自動捕獲未處理Promise錯誤。

以上這篇捕獲未處理的Promise錯誤方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 广德县| 简阳市| 买车| 九龙坡区| 鹤山市| 禹城市| 南安市| 右玉县| 开江县| 沁水县| 高雄县| 辽宁省| 镶黄旗| 台中县| 石泉县| 云安县| 青冈县| 临洮县| 大城县| 遂川县| 邢台县| 偃师市| 平陆县| 洪洞县| 郸城县| 双柏县| 南汇区| 新民市| 铁岭县| 孟连| 凉山| 双江| 电白县| 阿城市| 江孜县| 修武县| 凤冈县| 康马县| 杨浦区| 依兰县| 贺兰县|