4 回答

TA貢獻2012條經驗 獲得超12個贊
同步狀態(tài)下順序執(zhí)行
Promise 新建后立即執(zhí)行, then 在當前腳本所有同步任務執(zhí)行完才會執(zhí)行, then方法返回的是一個新的Promise實例
Promise.resolve方法允許調用時不帶參數(shù),直接返回一個resolved狀態(tài)的 Promise 對象。
事件隊列里面 Promise 比 setTimeout 早執(zhí)行
所以應該是這樣:
=> 'begin'
=> 定義了一個異步setTimeout 1,先放到事件隊列(setTimeout 1),繼續(xù)同步執(zhí)行
=> 'end'
=> 同步代碼執(zhí)行完成,開始執(zhí)行異步 setTimeout 1 代碼
=> 'setTimeout 1'
=> 定義了異步Promise.resolve,返回一個 Promise1 ,先放到事件隊列(Promise1),繼續(xù)同步執(zhí)行
=> 新建Promise 立即執(zhí)行
=> 'a'
=> 同步代碼執(zhí)行完畢,返回新的Promise , 先放到事件隊列(Promise1,Promise)
=> 開始執(zhí)行 Promise1
=> 'promise 1'
=> 繼續(xù)同步執(zhí)行,定義了一個異步setTimeout 2, 放到事件隊列(Promise,setTimeout 2)
=> Promise1同步代碼執(zhí)行完畢,返回一個 Promise2, 放到事件隊列(Promise,setTimeout 2,Promise2)
=> 同步代碼執(zhí)行完畢,執(zhí)行 Promise代碼
=> 'b'
=> Promise 完畢,隊列中還有 Promise2 和 setTimeout 2
=> 先 Promise2
=> 'promise 2'
=> 繼續(xù) setTimeout 2
=> 'setTimeout2'
添加回答
舉報