国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

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

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

瀏覽:93日期: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)文章:
主站蜘蛛池模板: 亚洲精品在线网站 | 国内国产真实露脸对白 | 成人国产第一区在线观看 | 福利岛国深夜在线 | 亚洲视频在线观看免费视频 | 久久男人的天堂 | 99精彩视频 | 成人在线网址 | 分享一个无毒不卡免费国产 | 日本免费一级视频 | 成人午夜精品 | avav男人天堂 | 久草影音 | 亚洲国产成人精品久久 | 国产精品一区二区手机在线观看 | 色偷偷亚洲偷自拍 | 亚洲视频手机在线观看 | 天堂精品高清1区2区3区 | 亚洲视频一区在线 | 99视频一区| 4四虎44虎www在线影院麻豆 | a级毛片免费在线观看 | 国产欧美一区二区三区久久 | 日本三级在线观看中文字 | 日产日韩亚洲欧美综合搜索 | 九九视频免费在线观看 | 国产成人精品综合在线 | 最新毛片久热97免费精品视频 | 欧美很黄视频在线观看 | 国产在视频线在精品 | 亚洲 欧美 激情 另类 校园 | 亚洲综合亚洲综合网成人 | 国产91精品一区二区麻豆亚洲 | 青青热久久国产久精品秒播 | 7777在线视频 | 北条麻妃在线一区二区 | 一级免费 | 国亚洲欧美日韩精品 | 人人爽人人香蕉 | 久久国产视频在线观看 | 久久性生大片免费观看性 |