最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

捕獲未處理的Promise錯(cuò)誤方法

 更新時(shí)間:2017年10月13日 08:41:43   作者:Fundebug  
下面小編就為大家?guī)硪黄东@未處理的Promise錯(cuò)誤方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

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

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

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

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

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

瀏覽器中未處理的Promise錯(cuò)誤

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

unhandledrejection

監(jiān)聽unhandledrejection事件,即可捕獲到未處理的Promise錯(cuò)誤:

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

這個(gè)事件是PromiseRejectionEvent實(shí)例,它有2個(gè)最重要的屬性:

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

rejectionhandled

當(dāng)一個(gè)Promise錯(cuò)誤最初未被處理,但是稍后又得到了處理,則會(huì)觸發(fā)rejectionhandled事件:

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

這個(gè)事件是PromiseRejectionEvent實(shí)例。

示例代碼:

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錯(cuò)誤

監(jiān)聽unhandledRejection事件,即可捕獲到未處理的Promise錯(cuò)誤:

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)會(huì)報(bào)告未處理的Promise錯(cuò)誤,因此不去監(jiān)聽unhandledrejection事件也沒問題。

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

以上這篇捕獲未處理的Promise錯(cuò)誤方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 原生js檢測(cè)頁面加載完畢的實(shí)例

    原生js檢測(cè)頁面加載完畢的實(shí)例

    今天小編就為大家分享一篇原生js檢測(cè)頁面加載完畢的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • javascript 事件處理程序介紹

    javascript 事件處理程序介紹

    javascript 事件處理程序介紹,學(xué)習(xí)js的朋友可以參考下
    2012-06-06
  • JS實(shí)現(xiàn)很酷的水波文字特效實(shí)例

    JS實(shí)現(xiàn)很酷的水波文字特效實(shí)例

    這篇文章主要介紹了JS實(shí)現(xiàn)很酷的水波文字特效,實(shí)例分析了javascript操作圖層特效的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-02-02
  • 讓getElementsByName適應(yīng)IE和firefox的方法

    讓getElementsByName適應(yīng)IE和firefox的方法

    讓getElementsByName適應(yīng)IE和firefox的方法...
    2007-09-09
  • highlight.js 代碼高亮插件的使用詳解

    highlight.js 代碼高亮插件的使用詳解

    在網(wǎng)頁使用過程中,經(jīng)常會(huì)用到代碼的展示。代碼高亮可以直觀的了解代碼,本文主要介紹了highlight.js 代碼高亮插件的使用詳解,具有一定的參考價(jià)值,感興趣的可以了解一下
    2022-01-01
  • 用最少的JS代碼寫出貪吃蛇游戲

    用最少的JS代碼寫出貪吃蛇游戲

    本篇文章給大家分享了用嘴簡(jiǎn)單的JS代碼來實(shí)現(xiàn)經(jīng)典貪吃蛇游戲的全部?jī)?nèi)容,有興趣的朋友參考學(xué)習(xí)下。
    2018-01-01
  • webpack?loader使用的安裝配置

    webpack?loader使用的安裝配置

    這篇文章主要為大家介紹了webpack?loader使用的安裝配置詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • JavaScript中的函數(shù)(二)

    JavaScript中的函數(shù)(二)

    函數(shù)是由事件驅(qū)動(dòng)的或者當(dāng)它被調(diào)用時(shí)執(zhí)行的可重復(fù)使用的代碼塊。本文給大家介紹介紹javascript中的函數(shù)(二),對(duì)javascript函數(shù)相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧
    2015-12-12
  • P3P Header解決Cookie跨域的問題

    P3P Header解決Cookie跨域的問題

    P3P Header解決Cookie跨域的問題,需要的朋友可以參考一下
    2013-03-03
  • 微信小程序progress組件使用詳解

    微信小程序progress組件使用詳解

    這篇文章主要為大家詳細(xì)介紹了微信小程序progress組件的使用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01

最新評(píng)論

嘉义县| 无锡市| 年辖:市辖区| 申扎县| 嫩江县| 哈尔滨市| 齐河县| 花莲县| 花莲县| 修文县| 弋阳县| 肃北| 观塘区| 象州县| 林口县| 阜平县| 长治县| 贵阳市| 西乡县| 微博| 临沭县| 梁平县| 西昌市| 莎车县| 磴口县| 建瓯市| 翁源县| 嘉黎县| 柳州市| 文昌市| 石棉县| 吉隆县| 金寨县| 宣城市| 蛟河市| 耿马| 名山县| 五峰| 曲松县| 铁岭市| 新郑市|