this.nextTick()
官方解釋用法: 在下次 DOM 更新循環(huán)結(jié)束之后執(zhí)行延遲回調(diào)肴熏。在修改數(shù)據(jù)之后立即使用這個方法,獲取更新后的 DOM顷窒。
算是個異步的函數(shù)蛙吏;
vue 渲染DOM ,是在mounted() 鉤子函數(shù)里鞋吉; created 函數(shù)中 DOM還沒有渲染鸦做;所以在created中要想操作DOM 需要借助this.nextTick();(有時在mounted()也需要)
this.nextTick() 與 setTimeout的區(qū)別就在于: this.nextTick() 優(yōu)先于 setTimeout 執(zhí)行坯辩; 這與兩者分屬不同隊列有關(guān)
1. 宏隊列
setTimeout ; setInterval ; setImmediate ; I/O
2. 微隊列
process.nextTick() ; Promise; 等
執(zhí)行順序: 宏任務 > 微任務 > 宏任務 > 微任務
javascript 是單線程的馁龟, 在執(zhí)行js代碼的時候, 全局的js代碼是個宏任務漆魔, 遇到同步的就執(zhí)行,異步的就分別放入對應的任務隊列中去却音; 等到全局的js代碼的同步執(zhí)行完成后改抡,就開始找微隊列里的微任務,等到微任務執(zhí)行完成后系瓢,才開始執(zhí)行宏隊列的宏任務阿纤;