色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

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

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

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

1. 原理圖

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

2. 說明

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ù)代碼 每次準(zhǔn)備取出第一個宏任務(wù)執(zhí)行前, 都要將所有的微任務(wù)一個一個取出來執(zhí)行,也就是優(yōu)先級比宏任務(wù)高,且與微任務(wù)所處的代碼位置無關(guān)

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

setTimeout(() => { //立即放入宏隊列 console.log(’timeout callback1()’) Promise.resolve(3).then( value => { //立即放入微隊列 console.log(’Promise onResolved3()’, value) } ) }, 0) setTimeout(() => { //立即放入宏隊列 console.log(’timeout callback2()’) }, 0) Promise.resolve(1).then( value => { //立即放入微隊列 console.log(’Promise onResolved1()’, value) setTimeout(() => { console.log(’timeout callback3()’, value) }, 0) } ) Promise.resolve(2).then( value => { //立即放入微隊列 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) //會被忽略,因為會先執(zhí)行微隊列里的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)文章:
主站蜘蛛池模板: 国产男女交性视频播放免费bd | 国产精品2020观看久久 | 国产高清专区 | 在线观看亚洲精品专区 | 国产成人福利视频网站 | 国产呦精品一区二区三区网站 | 永久天堂 | 亚洲一区视频 | 中文字幕成人在线 | 自拍偷自拍亚洲精品一区 | 欧美日韩精品一区二区三区不卡 | 日本三级久久 | 欧美13一14sexvideo欧 | 欧美日韩国产亚洲一区二区 | 欧美综合亚洲 | 一级成人毛片免费观看 | 国产精品亚洲精品日韩已满 | 看真人视频a级毛片 | 国产一区二区三区免费播放 | 国产综合亚洲专区在线 | 日本一区深夜影院深a | 日韩一区视频在线 | 一级毛片免费完整视频 | 小屁孩cao大人免费网站 | 欧美激情伦妇在线观看 | 国内精品久久久久久影院8f | 国产主播福利精品一区二区 | 亚洲欧美视频在线观看 | 美女mm131爽爽爽免费视色 | 中国做爰国产精品视频 | 日韩精品一区二区三区中文字幕 | 日韩福利视频精品专区 | 日韩在线三级视频 | 亚洲自偷自偷图片在线高清 | 久久青青草视频 | 国产视频a| 亚洲三级在线观看 | 日本三级毛片 | 国产精品福利午夜一级毛片 | 特黄特a级特别特级特毛片 特黄特黄 | 久久手机视频 |