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

首頁 > 開發(fā) > JS > 正文

捕獲未處理的Promise錯誤方法

2024-05-06 16:40:18
字體:
供稿:網(wǎng)友

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

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

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

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

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

瀏覽器中未處理的Promise錯誤

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

unhandledrejection

監(jiān)聽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錯誤監(jiān)控插件監(jiān)聽了unhandledrejection事件,因此可以自動捕獲未處理Promise錯誤。

rejectionhandled

當(dāng)一個Promise錯誤最初未被處理,但是稍后又得到了處理,則會觸發(fā)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錯誤

監(jiān)聽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+ 默認(rèn)會報告未處理的Promise錯誤,因此不去監(jiān)聽unhandledrejection事件也沒問題。

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

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

 

注:相關(guān)教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 航空| 武威市| 青海省| 宁陕县| 巫山县| 东辽县| 资中县| 仙桃市| 绥宁县| 平远县| 吉水县| 晋江市| 壶关县| 巴马| 石渠县| 贵州省| 绥芬河市| 古交市| 永寿县| 扎鲁特旗| 金湖县| 德保县| 隆尧县| 雅安市| 竹北市| 金溪县| 陆河县| 巴塘县| 马山县| 富宁县| 万盛区| 敦煌市| 罗甸县| 修武县| 桐庐县| 留坝县| 抚松县| 烟台市| 普洱| 五台县| 宜都市|