this.nextTick() 与 setTimeout的区别; 宏任务和微任务

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代码的同步执行完成后,就开始找微队列里的微任务,等到微任务执行完成后,才开始执行宏队列的宏任务;

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容