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ù);