源码实现思路(面试高分回答)
面试官问我 Vue 的 nextTick 原理是怎么实现的,我这样回答:
在调用 this.$nextTick(cb) 之前:
- 存在一个
callbacks数组,用于存放所有的cb回调函数。 - 存在一个
flushCallbacks函数,用于执行callbacks数组中的所有回调函数。 - 存在一个
timerFunc函数,用于将flushCallbacks函数添加到任务队列中。
当调用 this.nextTick(cb) 时:
nextTick会将 cb 回调函数添加到callbacks数组中。- 判断在当前事件循环中是否是第一次调用
nextTick:- 如果是第一次调用,将执行
timerFunc函数,添加flushCallbacks到任务队列。 - 如果不是第一次调用,直接下一步。
- 如果是第一次调用,将执行
- 如果没有传递 cb 回调函数,则返回一个
Promise实例。
根据上述描述,对应的流程图如下:

最低0.47元/天 解锁文章
4264

被折叠的 条评论
为什么被折叠?



