this.nextTick()
官方解释用法: 在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的 DOM。
算是个异步的函数;
vue 渲染DOM ,是在mounted() 钩子函数里; created 函数中 DOM还没有渲染;所以在created中要想操作DOM 需要借助this.nextTick();(有时在mounted()也需要)
this.nextTick() 与 setTimeout的区别就在于: this.nextTick() 优先于 setTimeout 执行; 这与两者分属不同队列有关
1. 宏队列
setTimeout ; setInterval ; setImmediate ; I/O
2. 微队列
process.nextTick() ; Promise; 等
执行顺序: 宏任务 > 微任务 > 宏任务 > 微任务
javascript 是单线程的, 在执行js代码的时候, 全局的js代码是个宏任务, 遇到同步的就执行,异步的就分别放入对应的任务队列中去; 等到全局的js代码的同步执行完成后,就开始找微队列里的微任务,等到微任务执行完成后,才开始执行宏队列的宏任务;