瀏覽器和node的eventLoop的區別

咖啡泡沫發表於2018-12-04

今天看eventLoop時,看一段程式碼 ,自己在腦中執行的結果和作者給出的答案不相同,所以索性就直接執行啊,結果在node中就是我的結果,當時一拍大腿就像給作者留言,你錯了O(∩_∩)O哈哈~,待到自己冷靜下來,感覺自己應該在瀏覽器中再執行一遍,emmmm這次出來就是樓主的結果,我自閉了...,所以開始查資料 題目是在這個部落格裡看的:segmentfault.com/a/119000001… 這是那個題目:

console.log(1);

setTimeout(() => {
  console.log(2);
  Promise.resolve().then(() => {
    console.log(3)
  });
});

new Promise((resolve, reject) => {
  console.log(4)
  resolve(5)
}).then((data) => {
  console.log(data);
})

setTimeout(() => {
  console.log(6);
})

console.log(7);
複製程式碼

結果截圖:

node.js執行結果
瀏覽器中的結果
其實主要的差別就是在最後的兩個任務的執行,在瀏覽器中是一次執行只取macrotask的一個任務,而在node中是直接將macrotask全部執行。

還有一些差別參考:segmentfault.com/a/119000001…

相關文章