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

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

node eventloop 問題

node eventloop 問題

慕少森 2019-03-05 16:19:58
setTimeout(() => {  console.log(1)  Promise.resolve(3).then(data => console.log(data));}, 0)setTimeout(() => {  console.log(2)}, 0)我們知道setTimeout的的回調在timer階段執行,然后2個setTimeout 都會被注冊到timer階段eventloop 檢查timer時候,有2個setTimeout 然后執行,并且第一個setTimeout中的 promise.resolve() 在注冊到microTask中,在timer 階段結束 執行microTask.但是這個代碼執行會出現 1 2 3 和 1 3 2 的結果所以有點不理解為什么會有這兩種不同的結果。
查看完整描述

1 回答

?
動漫人物

TA貢獻1815條經驗 獲得超10個贊

Note: When delay is larger than 2147483647 or less than 1, the delay will be set to 1.

timers_settimeout_callback_delay_args

這取決于timer階段會不會認為第2個timer超時。
然后你可以改成

setTimeout(() => {

    console.log(1)

    Promise.resolve(3).then(data => console.log(data));

}, 0)


setTimeout(() => {

    console.log(2)

}, 0)


let d = Date.now();

while (!(Date.now() - d > 1)) {


}


查看完整回答
反對 回復 2019-04-09
  • 1 回答
  • 0 關注
  • 302 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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