从 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()
已有142人预订
预订达标
文章出炉
交流日期
     
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 开发必备面试题详解(技术+人事)
宁楠
如何设计一个灵活的 MySQL 数据表,应对灵活多变的需求
李岩
纯前端大数据处理技术:葡萄城纯前端开发工具应用实践
葡萄城技术团队
Jenkins 自动化构建部署实战
火币集团研发中心
Java 程序员应掌握的 Nginx 实战应用
JPM
小白机器学习基础算法学习必经之路
武博士
微信扫描登录