疑惑对老师解答的nexttick

来源:2-1 需求分析

幕布斯9323460

2017-10-09

老师我看到你以前回答别人关于nexttck问题是这样说的就是
1:mounted是可以获取到dom的,但并未保证真正完成渲染到页面,所以依赖dom的宽度高度啥的必须延迟一个tick
2:一个tick大约17ms所以你会推荐用settimeout(fn,20)来执行
3:nexttick是相当于settimeout(fn,0)

那按照上面的理论来说 nexttick是肯定会有问题的啊 因为他设置为0就是说我还没有经过一个tick约17ms就去执行可能没渲染完成,
那么问题来了为什么官方还推荐用nexttick呢难道没有问题? 麻烦老师帮我解决下疑惑

写回答

2回答

ustbhuangyi

2017-10-09

setTimeout(fn, 0) 也并不是 0 ms 后执行,也是需要一个 tick 的时间才会执行。
另外 Vue 的 nextTick 并不是 settimeout(fn,0),通常会更早一些,只有比较老的浏览器才会降级为 settimeout(fn,0),感兴趣可以看看源码。

0
1
噬蛇之牙2
是不是因为nextTick在老的浏览器中会自动降级,所以才使用setTimeout代替?不明白为什么不使用nextTick
2018-06-22
共1条回复

幕布斯9323460

提问者

2017-10-09

是不是nexttick是可以拿到dom的但是如果是牵涉到dom宽度高度的话就有可能没有渲染完成就可能出现问题了?

0
0

Vue2.0高级应用教学实战,开发企业级移动端音乐Web App

Vue.js高级知识应用大集合,实战企业级APP,教你搞定组件化开发。

5432 学习 · 3804 问题

查看课程