CNode

关于vue的nexttick?

问答
11269886839发布于5 年前最后回复5 年前5 回复2668 浏览0 收藏

this.a = 1; this.$nexttick(() => { console.log('nexttick1') }) this.b = 2; this.$nexttick(() => { console.log('nexttick2') }); 谁能帮我讲解一下啊。底层原理。

查看回复

回复 (5)

1
1269886839#2·5 年前
引用 chenkai0520https://github.com/vuejs/vue/blob/dev/src/core/util/next tick.js

@chenkai0520 这个源码 我看了好多遍了。开一个微任务。执行。除非this.a = 1。跟this.b = 2。是同步任务。不然nexttick怎么会在两次dom更新后执行。但是你觉得 dom 更新是同步吗?vue 不是有批处理的啊。

1
1269886839#5·5 年前

我说一下我的最新理解。看大佬能不能帮忙纠正。 this.$nexttick 的时候其实已经调用 $nexttick 的 getter 已经进入 wathcer 队列。后边的this.a this.b这些都进队列。 所以watcher的微任务要比 $nexttick 函数里边的微任务队列要先。是不是这个意思。

参与回复
登录后即可参与回复。登录