this.nextTick() 與 setTimeout的區(qū)別; 宏任務(wù)和微任務(wù)

this.nextTick()

官方解釋用法: 在下次 DOM 更新循環(huán)結(jié)束之后執(zhí)行延遲回調(diào)。在修改數(shù)據(jù)之后立即使用這個(gè)方法,獲取更新后的 DOM。
算是個(gè)異步的函數(shù);
vue 渲染DOM ,是在mounted() 鉤子函數(shù)里; created 函數(shù)中 DOM還沒(méi)有渲染;所以在created中要想操作DOM 需要借助this.nextTick();(有時(shí)在mounted()也需要)

this.nextTick() 與 setTimeout的區(qū)別就在于: this.nextTick() 優(yōu)先于 setTimeout 執(zhí)行; 這與兩者分屬不同隊(duì)列有關(guān)

1. 宏隊(duì)列

setTimeout ; setInterval ; setImmediate ; I/O

2. 微隊(duì)列

process.nextTick() ; Promise; 等

執(zhí)行順序: 宏任務(wù) > 微任務(wù) > 宏任務(wù) > 微任務(wù)

javascript 是單線程的, 在執(zhí)行js代碼的時(shí)候, 全局的js代碼是個(gè)宏任務(wù), 遇到同步的就執(zhí)行,異步的就分別放入對(duì)應(yīng)的任務(wù)隊(duì)列中去; 等到全局的js代碼的同步執(zhí)行完成后,就開(kāi)始找微隊(duì)列里的微任務(wù),等到微任務(wù)執(zhí)行完成后,才開(kāi)始執(zhí)行宏隊(duì)列的宏任務(wù);

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容