从 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()
已有162人预订
预订达标
文章出炉
交流日期
     
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 应用后台重构技术策略详解
驰骋
微服务网关 Spring Cloud Gateway 的应用实战
aoho求索
Docker 的基础知识整理
假不理
如何采用一套程序代码,实现系统的“千人千面”
白公
JVM 常见面试题指南
驰骋
用领域驱动实现供应链系统商品录入和出入库设计
GIM
微信扫描登录