亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

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

JS異步宏隊(duì)列與微隊(duì)列原理區(qū)別詳解

瀏覽:75日期:2024-05-01 17:33:20

1. 原理圖

JS異步宏隊(duì)列與微隊(duì)列原理區(qū)別詳解

2. 說明

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

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

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

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

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

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

3. 相關(guān)題目

代碼一:

// 3 7 4 1 2 5 /* 宏: [] 微: [] */ const first = () => (new Promise((resolve, reject) => { console.log(3) let p = new Promise((resolve, reject) => { console.log(7) setTimeout(() => { console.log(5) resolve(6) //會被忽略,因?yàn)闀葓?zhí)行微隊(duì)列里的resolve(1),此時狀態(tài)已經(jīng)改變過了,且狀態(tài)只能改變一次 }, 0) resolve(1) }) resolve(2) p.then((arg) => { console.log(arg) }) })) first().then((arg) => { console.log(arg) }) console.log(4)

代碼二:

// 1 7 2 3 8 4 6 5 0 setTimeout(() => { console.log('0') }, 0) new Promise((resolve, reject) => { console.log('1') resolve() }).then(() => { console.log('2') new Promise((resolve, reject) => { console.log('3') resolve() }).then(() => { console.log('4') }).then(() => { console.log('5') }) }).then(() => { console.log('6') }) new Promise((resolve, reject) => { console.log('7') resolve() }).then(() => { console.log('8') })

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

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 婬荡少妇21p| 成人深夜福利在线播放不卡 | 麻豆影视在线观看 | 亚洲欧美在线观看一区二区 | 97午夜| 久久综合九色婷婷97 | 一区二区视频在线观看高清视频在线 | 精品乱人伦一区二区三区 | 国产一区中文字幕在线观看 | 韩国网站爱久久 | 播放中国女人毛片一级带 | 日韩精品欧美国产精品亚 | 麻豆国产精品va在线观看不卡 | 99热都是精品 | 国产美女白丝袜精品_a不卡 | 国产日韩一区二区三区在线播放 | 国产精品入口麻豆 | 国产免费黄色大片 | 不卡一级毛片免费高清 | 国产精品久久久久国产精品 | 成年人免费视频网站 | 久久精品香蕉 | 99视频在线 | a级成人高清毛片 | 国产成人免费高清激情视频 | 精品美女视频在线观看2023 | 全免费午夜一级毛片一级毛 | 国产在线91观看免费观看 | 一区二区三区高清在线观看 | 92精品国产自产在线观看48页 | 一级片黄色的 | 亚色一区 | 黄色毛片免费进入 | 国产精品视频分类一区 | 国内在线精品 | 欧美另类综合 | 久久久这里只有精品加勒比 | 精品国产电影网久久久久婷婷 | 女色婷婷网 | 在线精品视频播放 | 国产成人毛片毛片久久网 |