在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML/ js中的eventloop是什么時(shí)候開(kāi)始第一個(gè)tick,什么時(shí)候結(jié)束本次tick

js中的eventloop是什么時(shí)候開(kāi)始第一個(gè)tick,什么時(shí)候結(jié)束本次tick,一次tick通常會(huì)經(jīng)歷什么過(guò)程?

1.很多文章都講了eventloop會(huì)如何運(yùn)行,如何讀取任務(wù)隊(duì)列,宏任務(wù),微任務(wù)等等,但是我不是很明白究竟何時(shí)開(kāi)始的第一次tick?

宏任務(wù):script整體代碼,setTimeout等等
微任務(wù):promise等等

何時(shí)開(kāi)始?

說(shuō)法一:是在執(zhí)行全局的script代碼時(shí)就算開(kāi)始一次tick

說(shuō)法二:當(dāng)執(zhí)行完所有的同步代碼后,開(kāi)始向任務(wù)隊(duì)列讀取異步任務(wù)時(shí)算開(kāi)始第一次tick,這個(gè)異步任務(wù)可能是promise等微任務(wù)

何時(shí)結(jié)束?

說(shuō)法一:如果有微任務(wù),那每次微任務(wù)執(zhí)行完就算本次tick結(jié)束,即宏任務(wù)-微任務(wù),結(jié)束本次tick,如果沒(méi)有微任務(wù),就是執(zhí)行完宏任務(wù)就算結(jié)束了。

上面的說(shuō)法都是我自己的猜測(cè)可能都不準(zhǔn)確,希望大佬解答疑惑。

回答
編輯回答
陌上花

最近查找資料得出結(jié)論:

第一個(gè)Tick是從執(zhí)行全局的script代碼開(kāi)始。
結(jié)束是UI render結(jié)束,本輪tick也就結(jié)束了。
如果有微任務(wù)會(huì)執(zhí)行完所有微任務(wù)再執(zhí)行UI render,然后結(jié)束

2018年1月7日 04:29