Promise
await和async
setTimeout
setInterval
DOM事件
AJAX請(qǐng)求
我們發(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
創(chuàng)新互聯(lián)建站是一家朝氣蓬勃的網(wǎng)站建設(shè)公司。公司專注于為企業(yè)提供信息化建設(shè)解決方案。從事網(wǎng)站開發(fā),網(wǎng)站制作,網(wǎng)站設(shè)計(jì),網(wǎng)站模板,微信公眾號(hào)開發(fā),軟件開發(fā),小程序開發(fā),10年建站對(duì)成都混凝土攪拌罐車等多個(gè)行業(yè),擁有豐富建站經(jīng)驗(yàn)。
先同步后異步,先微后宏
微任務(wù)的執(zhí)行時(shí)機(jī)比宏任務(wù)早哈~
肯定是先執(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
微任務(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渲染后的哈
如果你覺得我寫的還不錯(cuò)的話~~
請(qǐng)你給我點(diǎn)個(gè)一個(gè)推薦或者關(guān)注我!!
或者請(qǐng)我買一包辣條謝謝你了~~~