第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

萌新求教!面試遇到的一個javascript算法題,求教

萌新求教!面試遇到的一個javascript算法題,求教

三國紛爭 2019-06-13 10:15:32
在一個網(wǎng)站上看到的,看了整篇文章,還是不知道這個的結(jié)果時怎么出來的,真的好菜,特來向大家請教下怎么來的(麻煩詳細(xì)點,比較笨。)console.log(1);newPromise(function(resolve,reject){reject(true);window.setTimeout(function(){resolve(false);},0);}).then(function(){console.log(2);},function(){console.log(3);});console.log(4);順便幫作者打波廣告,文章原鏈接:鏈接描述
查看完整描述

2 回答

?
holdtom

TA貢獻(xiàn)1805條經(jīng)驗 獲得超10個贊

答案:143過程:
首先整段js從上到下執(zhí)行,遇到console.log(1)輸出了1;
遇到了newPromise(function(resolve,reject){})。繼續(xù)往里看,遇到了reject(true)。此時的promise的狀態(tài)由pending變成了rejected。再往下看,是一個setTimeout,setTimeout方法內(nèi)部的操作將會被丟到下一個宏任務(wù)的隊列中執(zhí)行,即使時間為0。
執(zhí)行完function內(nèi)部看.then()了。.then()內(nèi)部的操作將丟到微任務(wù)隊列里面等待執(zhí)行。
繼續(xù)向下看,遇到console.log(4)輸出4
此時這個宏任務(wù)已經(jīng)執(zhí)行完啦,開始執(zhí)行微任務(wù)。微任務(wù)隊列中有個.then(),.then()方法可以接受兩個回調(diào)函數(shù)作為參數(shù)。第一個回調(diào)函數(shù)是Promise對象的狀態(tài)變?yōu)閞esolved時調(diào)用,第二個回調(diào)函數(shù)是Promise對象的狀態(tài)變?yōu)閞ejected時調(diào)用。其中,第二個函數(shù)是可選的。此時的promise的狀態(tài)是rejected,于是走的是第二個function(){},也就是console.log(3),于是便輸出了3
微任務(wù)隊列也執(zhí)行完了,開始執(zhí)行下一輪的宏任務(wù),也就是setTimeout內(nèi)部的操作,但是此時的resolve(false)并不能改變promise的狀態(tài),因為promise的狀態(tài)一旦改變了就一直保持這個狀態(tài)不會再發(fā)生變化了。
                            
查看完整回答
反對 回復(fù) 2019-06-13
  • 2 回答
  • 0 關(guān)注
  • 206 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號