关于nextTick的问题

来源:4-9 nextTick

正正果实

2019-12-08

在next-tick里有这几行代码,
if (useMacroTask) {
macroTimerFunc()
} else {
microTimerFunc()
}
问下在event事件里走的是macroTimerFunc,生命周期里走的是microTimerFunc,为何两边处理不一样啊?这样导致event事件和生命周期里执行异步代码的顺序不一样,是为啥要这么处理?

写回答

1回答

ustbhuangyi

2019-12-09

这个是 2.5.17-beta 版本的逻辑,最新 2.6 版本这块逻辑又改变了。之前主要是考虑到了一些边界情况,比如事件冒泡的情况,所以 event 统一用 macroTask 处理,确保顺序。
next-tick.js 的代码虽然不多,但是注释很详细,建议看它的注释,配合相关的 issue 加深理解。

0
1
正正果实
非常感谢!
2019-12-09
共1条回复

Vue.js 源码深入解析 深入理解Vue实现原理

全方位讲解 Vue.js 源码,进阶高级工程师

4990 学习 · 1038 问题

查看课程