亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

求解Promise的一道面試題

求解Promise的一道面試題

慕姐4208626 2018-07-31 10:20:27
最近在看Promise相關知識,遇到一個面試題,以我的理解,應該是先輸出a failed,然后b failed b passed的,可是為什么a failed在中間輸出了??
查看完整描述

2 回答

?
jeck貓

TA貢獻1909條經驗 獲得超7個贊

強調:Promise的每個thencatch都是異步執行的。

因此,實際上最先執行的是a.then,但沒有定義catch,所以拋出異常,然后異步交給后面的catch處理(a failed)。此時下一個等待執行的是b.catchb failed),處理完之后,同樣異步交給后面的thenb passed)。接著,之前排隊的catchb failed)執行,最后b passed執行。

這就是各個then/catch交替執行的原因。

整個過程類似于下面的代碼:

setTimeout(function(){

    console.log(1);

    setTimeout(function(){

        console.log(2);

    }, 0);

}, 0);


setTimeout(function(){

    console.log(3);

    setTimeout(function(){

        console.log(4);

    }, 0);

}, 0);

結果打印1 3 2 4,而不是1 2 3 4。

查看完整回答
反對 回復 2018-08-04
  • 2 回答
  • 0 關注
  • 912 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號