从 JS Event Loop 机制看 Vue 中 nextTick 的实现原理

作者/分享人:大师兄
向 Ta 提问
我就是大师兄😄 ,喜欢钻研和分享技术,现是某不知名公司移动端架构师兼撸代码。主要开发产品:mdn(适配app和微信的移动端解决方案),pageui(移动端ui组件库),formBuilder(可以让前端建表和操作表的表单设计器)。运营的公众号:web前端开发大师兄。

我们知道 Vue 的数据驱动视图更新,是异步的,即修改数据的当下,视图不会立刻更新,而是等同一事件循环中的所有数据变化完成之后,再统一进行视图更新。这样可以避免不必要的重复计算和 DOM 操作上非常重要。通过本场 Chat 你可以了解到:

  1. JavaScript 中的 Event Loop 运行机制
  2. JavaScript 中函数调用栈与任务队列
  3. 了解 JavaScript 中的 MacroTask(Task) 与 MicroTask(Job)
  4. 学习 Vue.js 中是如何实现 vm.$nextTick()
  5. 如何更好的使用 vm.$nextTick()
已有169人预订
预订达标
文章出炉
交流日期
     
17.11.03
17.11.15
17.11.23 20:30
查看文章评论/提问
像我这样的人
你好,我想问下vue 的nextTick里面的回调是在下个Tick执行的吗?根绝你的文章我觉得是在本次tick执行的啊,比如这个代码 this.name="new name"; this.$nextTick(()=>{ console.log(this.name) }) 我通过调试发现,执行完本轮的task后就去执行jobs也就是一般执行promise.then()里面的回调,然后进而执行更新组件数据的代码,再执行下面手动触发的nextTick的回调,然后开始UI rendre,此时本轮Tick结束,我怎么感觉nextTick这个叫法不太对劲呢?
你可能还喜欢
解读《阿里巴巴 Java 开发手册》背后的思考
Hollis
LeetCode 刷题指南以及常见算法题解题思路总结
kerry
初探 Kafka
阿福
高并发系统缓存实战入门
饿了么物流技术团队
7 天从 Java 工程师转型为 Go 工程师
DIU哥
大数据开发面试指南
王知无
微信扫描登录
关注提示×
扫码关注公众号,获得 Chat 最新进展通知!