亚洲免费在线视频-亚洲啊v-久久免费精品视频-国产精品va-看片地址-成人在线视频网

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

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

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

1. 原理圖

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

2. 說明

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(’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),此時(shí)狀態(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)文章:
主站蜘蛛池模板: www.xxx.国产| 国产成人aa在线观看视频 | 亚洲免费中文 | 黄色三级免费 | 久草久热| 中文欧美一级强 | 欧美一区二区三区免费高 | 88精品视频| 三级全黄的视频 | a毛片免费观看完整 | 草草在线观看视频 | 九九视频在线观看视频6偷拍 | 欧美激情第一欧美在线 | 成人免费毛片网站 | 久久精品国产99国产 | 欧美性色高清生活片 | 免费高清欧美一区二区视频 | 精品 日韩 国产 欧美在线观看 | 欧美一级特黄刺激爽大片 | 成年女人免费观看视频 | 拍真实国产伦偷精品 | 亚洲精品国产男人的天堂 | 在线亚洲精品国产波多野结衣 | 成人国产亚洲欧美成人综合网 | 女人张开腿给男人桶爽免费 | 高清性做爰免费网站 | 欧美一级特黄乱妇高清视频 | 成人高清无遮挡免费视频软件 | 毛片观看网址 | 亚洲精品视频久久久 | 国产亚洲精品成人a在线 | 九九99香蕉在线视频网站 | japanesevideo国产在线 | 国产精品1区| 日韩精品特黄毛片免费看 | 日本一级级特黄特色大片 | 天堂素人搭讪系列嫩模在线观看 | 日本一级特黄毛片高清视频 | 日日摸人人看97人人澡 | 免费a级毛片网站 | 国产女王s调视频vk 国产女王vk |