JS異步宏隊列微隊列原理詳解
先看一張我繪制的原理圖

原理圖
setImmediate 也是宏任務(wù),在 Node 環(huán)境下,微任務(wù)還有 process.nextTick
JS 中用來存儲待執(zhí)行回調(diào)函數(shù)的隊列包含 2 個不同特定的列隊
- 宏列隊:用來保存待執(zhí)行的宏任務(wù)(回調(diào)),比如:定時器回調(diào)、DOM 事件回調(diào)、ajax 回調(diào)微
- 列隊:用來保存待執(zhí)行的微任務(wù)(回調(diào)),比如:promise的回調(diào)、MutationObserver 的回調(diào)
JS 執(zhí)行時會區(qū)別這 2 個隊列
- JS 引擎首先必須先執(zhí)行所有的初始化同步任務(wù)代碼
- 每次準備取出第一個宏任務(wù)執(zhí)行前, 都要將所有的微任務(wù)一個一個取出來執(zhí)行,也就是優(yōu)先級比宏任務(wù)高,且與微任務(wù)所處的代碼位置無關(guān)
下面這個例子可以看出 Promise 要先于 setTimeout 執(zhí)行
setTimeout(() => { // 立即放入宏隊列
console.log('settimeout callback1()');
}, 0);
setTimeout(() => { // 立即放入宏隊列
console.log('settimeout callback2()');
}, 0);
Promise.resolve(1).then(value => { // 立即放入微隊列
console.log('Promise onResolved1()', value);
})
Promise.resolve(2).then(value => { // 立即放入微隊列
console.log('Promise onResolved2()', value);
})
// Promise onResolved1() 1
// Promise onResolved2() 2
// settimeout callback1()
// settimeout callback2()
全文完。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習有所幫助,也希望大家多多支持腳本之家。
- JS異步宏隊列與微隊列原理區(qū)別詳解
- 淺談Vuejs中nextTick()異步更新隊列源碼解析
- JS異步函數(shù)隊列功能實例分析
- JavaScript隊列函數(shù)和異步執(zhí)行詳解
- JavaScript 異步方法隊列鏈實現(xiàn)代碼分析
- JavaScript錯誤處理try..catch...finally+涵蓋throw+TypeError+RangeError
- 聊聊Javascript中try catch的2個作用
- 一分鐘學(xué)會JavaScript中的try-catch
- 實例解析js中try、catch、finally的執(zhí)行規(guī)則
- JavaScript異步隊列進行try?catch時的問題解決
相關(guān)文章
用最通俗易懂的代碼幫助新手理解javascript閉包 推薦
我同樣也是個javascript新手,怎么說呢,先學(xué)的jquery,精通之后發(fā)現(xiàn)了javascript的重要性,再回過頭來學(xué)javascript面向?qū)ο缶幊?/div> 2012-03-03
JavaScript之生成器_動力節(jié)點Java學(xué)院整理
generator(生成器)是ES6標準引入的新的數(shù)據(jù)類型。一個generator看上去像一個函數(shù),但可以返回多次,有興趣的可以了解一下。2017-06-06
javascript動態(tài)創(chuàng)建鏈接的方法
這篇文章主要介紹了javascript動態(tài)創(chuàng)建鏈接的方法,涉及javascript動態(tài)操作頁面元素的技巧,需要的朋友可以參考下2015-05-05
JS監(jiān)聽和響應(yīng)DOM元素的變化的方法
在前端開發(fā)中,處理動態(tài)變化的 DOM(文檔對象模型)很是常見的需求,比如自動化測試中,可能需要監(jiān)控 DOM 變化來驗證測試條件,在用戶填寫表單時,某些字段需要即時驗證等,所以本文給大家介紹了JS監(jiān)聽和響應(yīng)DOM元素的變化的方法,需要的朋友可以參考下2024-09-09
smartupload實現(xiàn)文件上傳時獲取表單數(shù)據(jù)(推薦)
這篇文章主要介紹了smartupload實現(xiàn)文件上傳時獲取表單數(shù)據(jù)的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-12-12最新評論

