91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Node事件循環中的微任務隊列是什么

發布時間:2023-04-14 09:40:30 來源:億速云 閱讀:138 作者:iii 欄目:web開發

這篇文章主要介紹“Node事件循環中的微任務隊列是什么”,在日常操作中,相信很多人在Node事件循環中的微任務隊列是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Node事件循環中的微任務隊列是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

Node事件循環中的微任務隊列是什么

// index.js
console.log("console.log 1");
process.nextTick(() => console.log("this is process.nextTick 1"));
console.log("console.log 2");

這段代碼,記錄了三個不同的語句。第二個語句使用 process.nextTick() 將回調函數排入 nextTick 隊列。

可視化

Node事件循環中的微任務隊列是什么

console.log 1
console.log 2
this is process.nextTick 1

推論

所有用戶編寫的同步 JavaScript 代碼優先于異步代碼執行。

讓我們繼續進行第二個實驗。

實驗二

代碼

// index.js
Promise.resolve().then(() => console.log("this is Promise.resolve 1"));
process.nextTick(() => console.log("this is process.nextTick 1"));

我們有一個 Promise.resolve().then() 調用和一個 process.nextTick() 調用。

可視化

Node事件循環中的微任務隊列是什么

this is process.nextTick 1
this is Promise.resolve 1

推論

nextTick 隊列中的所有回調函數優先于 Promise 隊列中的回調函數執行。

讓我帶你走一遍上述第二個實驗的更詳細版本。

福利實驗

代碼

// index.js
process.nextTick(() => console.log("this is process.nextTick 1"));
process.nextTick(() => {
  console.log("this is process.nextTick 2");
  process.nextTick(() =>
    console.log("this is the inner next tick inside next tick")
  );
});
process.nextTick(() => console.log("this is process.nextTick 3"));

Promise.resolve().then(() => console.log("this is Promise.resolve 1"));
Promise.resolve().then(() => {
  console.log("this is Promise.resolve 2");
  process.nextTick(() =>
    console.log("this is the inner next tick inside Promise then block")
  );
});
Promise.resolve().then(() => console.log("this is Promise.resolve 3"));

該代碼包含三個 process.nextTick() 調用和三個 Promise.resolve() 調用語句。每個回調函數記錄適當的消息。

但是,第二個 process.nextTick() 和第二個 Promise.resolve() 都有一個額外的 process.nextTick() 語句,每個都帶有一個回調函數。

可視化

Node事件循環中的微任務隊列是什么

this is process.nextTick 1
this is process.nextTick 2
this is process.nextTick 3
this is the inner next tick inside next tick
this is Promise.resolve 1
this is Promise.resolve 2
this is Promise.resolve 3
this is the inner next tick inside Promise then block

這可能是一個稍微高級的實驗,但推論仍然相同。

推論

nextTick 隊列中的所有回調函數優先于 Promise 隊列中的回調函數執行。

使用 process.nextTick() 時要小心。過度使用此方法可能會導致事件循環饑餓,從而阻止隊列中的其余部分運行。當存在大量的 nextTick() 調用時,I/O 隊列是無法執行自己的回調函數的。官方文檔建議使用 process.nextTick() 的兩個主要場景:處理錯誤或在調用棧為空事件循環繼續之前執行回調用。所以在使用 process.nextTick() 時,要明智一些。

到此,關于“Node事件循環中的微任務隊列是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

井陉县| 昭苏县| 通山县| 会泽县| 旺苍县| 胶南市| 察哈| 永安市| 德令哈市| 科技| 铅山县| 白银市| 宜春市| 米脂县| 九台市| 栾川县| 平南县| 九寨沟县| 自治县| 达日县| 彩票| 涞水县| 五家渠市| 囊谦县| 普安县| 库尔勒市| 普兰县| 乐山市| 莱芜市| 北辰区| 中卫市| 咸丰县| 达尔| 芦溪县| 房产| 南阳市| 武邑县| 饶平县| 深州市| 兴国县| 驻马店市|