国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術(shù)文章
文章詳情頁

JS異步宏隊(duì)列微隊(duì)列原理詳解

瀏覽:97日期:2024-04-21 08:38:03

先看一張我繪制的原理圖

JS異步宏隊(duì)列微隊(duì)列原理詳解

原理圖

setImmediate 也是宏任務(wù),在 Node 環(huán)境下,微任務(wù)還有 process.nextTick

JS 中用來存儲待執(zhí)行回調(diào)函數(shù)的隊(duì)列包含 2 個(gè)不同特定的列隊(duì)

宏列隊(duì):用來保存待執(zhí)行的宏任務(wù)(回調(diào)),比如:定時(shí)器回調(diào)、DOM 事件回調(diào)、ajax 回調(diào)微 列隊(duì):用來保存待執(zhí)行的微任務(wù)(回調(diào)),比如:promise的回調(diào)、MutationObserver 的回調(diào)

JS 執(zhí)行時(shí)會區(qū)別這 2 個(gè)隊(duì)列

JS 引擎首先必須先執(zhí)行所有的初始化同步任務(wù)代碼 每次準(zhǔn)備取出第一個(gè)宏任務(wù)執(zhí)行前, 都要將所有的微任務(wù)一個(gè)一個(gè)取出來執(zhí)行,也就是優(yōu)先級比宏任務(wù)高,且與微任務(wù)所處的代碼位置無關(guān)

下面這個(gè)例子可以看出 Promise 要先于 setTimeout 執(zhí)行

setTimeout(() => { // 立即放入宏隊(duì)列 console.log(’settimeout callback1()’);}, 0);setTimeout(() => { // 立即放入宏隊(duì)列 console.log(’settimeout callback2()’);}, 0);Promise.resolve(1).then(value => { // 立即放入微隊(duì)列 console.log(’Promise onResolved1()’, value);})Promise.resolve(2).then(value => { // 立即放入微隊(duì)列 console.log(’Promise onResolved2()’, value);})// Promise onResolved1() 1// Promise onResolved2() 2// settimeout callback1()// settimeout callback2()

全文完。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 永川市| 永泰县| 沛县| 平昌县| 普兰县| 甘南县| 荃湾区| 鞍山市| 阳原县| 枣强县| 宝坻区| 阿拉善左旗| 华亭县| 衡山县| 石台县| 民丰县| 双牌县| 克什克腾旗| 芮城县| 昆明市| 临海市| 安阳市| 泾源县| 岢岚县| 集贤县| 家居| 六安市| 中阳县| 石景山区| 长泰县| 山阳县| 甘孜县| 竹溪县| 五常市| 英吉沙县| 方城县| 册亨县| 方山县| 沙田区| 澜沧| 丹东市|