JavaScript中的宏任務(wù)和微任務(wù)詳情
1、微任務(wù)有哪些
Promise
await
和async
2、宏任務(wù)有哪些
setTimeout
setInterval
DOM
事件AJAX
請(qǐng)求
3、案例
<script> console.log(1) setTimeout(()=>{ console.log("2") },0) Promise.resolve().then(()=>{ console.log('3') }) console.log(4) </script>
我們發(fā)現(xiàn)打印的順序是1-4-3-2
為什么是這樣的順序?
先打印1-4這肯定是沒有問題的
為啥先打印3然后才是2
因?yàn)?是Promise
,Promise
是微任務(wù)。
2是setTimeout
,它是宏任務(wù)
微任務(wù)的執(zhí)行時(shí)機(jī)比宏任務(wù)早。
所以先執(zhí)行的是3然后才是2
3.1 結(jié)論
- 先同步后異步,先微后宏
- 微任務(wù)的執(zhí)行時(shí)機(jī)比宏任務(wù)早哈~
4、代碼案例
<body> <div id="app"></div> <script> // 這一段是dom渲染的 let app=document.getElementById("app") let cont='<p>我是p標(biāo)簽</p>' app.append(cont) // dom渲染結(jié)束 console.log(1) setTimeout(()=>{ console.log("2") alert('setTimeout2') },0) Promise.resolve().then(()=>{ console.log('3') alert('3') }) console.log(4) </script> </body>
4.1 代碼分析
上面這一段代碼的執(zhí)行分析:
肯定是先執(zhí)行1-4
然后根據(jù)先微任務(wù)后宏任務(wù)
就是輸出3然后彈出3
然后就是說輸出2然后彈出setTimeout2
【錯(cuò)誤的】
因?yàn)槲⑷蝿?wù)和宏任務(wù)之間還有一個(gè)DOM
渲染
所以然后是dom
渲染,最后才是宏任務(wù)
所以輸出1-4
后,執(zhí)行的是DOM
渲染。
然后才是輸出2然后彈出setTimeout2
4.2 結(jié)論和運(yùn)用的場(chǎng)景
微任務(wù)》DOM渲染》宏任務(wù) 看下面的例子
這個(gè)結(jié)論的運(yùn)用場(chǎng)景
我們都做過echarts.我們知道渲染echarts的時(shí)候。
需要頁面的DOM渲染完畢后,才能拿到節(jié)點(diǎn)進(jìn)行渲染。
所以有的小伙伴會(huì)請(qǐng)請(qǐng)求的時(shí)機(jī)放在monuted()這個(gè)生命周期中
這樣就可以確保返回來的數(shù)據(jù)肯定能夠正常渲染在頁面上。
其實(shí)根據(jù)上面這個(gè)結(jié)論。
你完全可以在created中去請(qǐng)求數(shù)據(jù)。返回來的的時(shí)候。
DOM肯定渲染完了。因?yàn)檎?qǐng)求是宏任務(wù)。
宏任務(wù)的執(zhí)行時(shí)機(jī)是在DOM渲染后的哈
到此這篇關(guān)于JavaScript
中的宏任務(wù)和微任務(wù)詳情的文章就介紹到這了,更多相關(guān)JavaScript
中的宏任務(wù)和微任務(wù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JS精髓原型鏈繼承及構(gòu)造函數(shù)繼承問題糾正
這篇文章主要為大家介紹了JS精髓原型鏈繼承及構(gòu)造函數(shù)繼承問題糾正,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06微信小程序封裝http訪問網(wǎng)絡(luò)庫實(shí)例代碼
這篇文章主要介紹了微信小程序封裝http訪問網(wǎng)絡(luò)庫實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2017-05-05微信小程序 定位到當(dāng)前城市實(shí)現(xiàn)實(shí)例代碼
這篇文章主要介紹了微信小程序 定位到當(dāng)前城市實(shí)現(xiàn)實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2017-02-02可視化埋點(diǎn)元素圈選器實(shí)現(xiàn)源碼
這篇文章主要為大家介紹了可視化埋點(diǎn)元素圈選器實(shí)現(xiàn)源碼示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01