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

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

阿里二面的一道筆試題,不太明白原理

阿里二面的一道筆試題,不太明白原理

拉風的咖菲貓 2019-03-12 21:23:31
var p1=new Promise(resolve => {    console.log(1)    resolve(2)})var p2=new Promise(resolve => {    console.log(3)    resolve(p1)})p1.then(re => {    console.log(re)    })p2.then(re => {    console.log(re)})
查看完整描述

7 回答

?
BIG陽

TA貢獻1859條經(jīng)驗 獲得超6個贊

第一步,初始化p1
打印 1
第二步,初始化p2
打印 3
第三步,執(zhí)行p1then方法
打印 2

補充說明:
修改上面最后一步:
第四步:執(zhí)行p2then方法,在此方法中又調(diào)用p1,此時,p1已經(jīng)處于resolved狀態(tài),所以返回2.
打印 2.

Promise對象是瀏覽器打印出來,node中執(zhí)行并沒有。詳細解決請參考@toBeTheLight 的回答。

https://img1.sycdn.imooc.com//5c947db500015cfa05390505.jpg

查看完整回答
反對 回復 2019-03-22
?
紅糖糍粑

TA貢獻1815條經(jīng)驗 獲得超6個贊

js的事件循環(huán)機制可以看這個瀏覽器和Node不同的事件循環(huán)(Event Loop)
剩下的就是resolve(promise)和resolve(1)的問題了。


瀏覽器比node會多輸出一個promise對象,你可以把它理解為整個代碼塊的返回值,它應該是最后一個語句的.then的返回值。具體解釋見另一個答案下的評論。


查看完整回答
反對 回復 2019-03-22
?
呼啦一陣風

TA貢獻1802條經(jīng)驗 獲得超6個贊

其實有兩個棧
開始執(zhí)行主棧,p1執(zhí)行,輸出1,resolve的后面的then放在次棧中
p2執(zhí)行,輸出3,,resolve的后面的then放在次棧中
主棧里的執(zhí)行完后,再去順序執(zhí)行次棧里的

這兩個棧其實有專有名詞的,忘了叫啥了


查看完整回答
反對 回復 2019-03-22
?
大話西游666

TA貢獻1817條經(jīng)驗 獲得超14個贊

p1和p2的new操作是在js主線程上執(zhí)行,按照先后順序同步的方式執(zhí)行你傳給promise的函數(shù),而promise實例p1和p2中then方法注冊的回調(diào)任務是異步執(zhí)行的,所以先輸出1和3。而又因為p2必須等p1 resolve之后才能執(zhí)行then邏輯,所以一定是先輸出p1的2,等p1 resolve之后,p2才會resolve,然后執(zhí)行p2的then邏輯在輸出一個2.

查看完整回答
反對 回復 2019-03-22
?
慕的地8271018

TA貢獻1796條經(jīng)驗 獲得超4個贊

promise一旦創(chuàng)建就會執(zhí)行,所以1,3肯定先打印出來,其他的就不用多說了??梢钥匆幌氯钜环謇蠋煹年P(guān)于ES6的講解,比較詳細,一語難以概括的。希望對你有幫助哇。


查看完整回答
反對 回復 2019-03-22
  • 7 回答
  • 0 關(guān)注
  • 764 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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