vue源码中flushCallbacks函数中copies.length?

新手上路,请多包涵

image.png
这个有点不懂哦,callbacks不是都复制给copies了吗?为什么for循环时还要copies.length,callbacks再push新的函数,也不影响copies的元素个数啊

阅读 1.5k
1 个回答
推荐一个学习vue2源码的地方,注释很详细,B站上有对应的视频

https://segmentfault.com/a/11...
https://juejin.cn/user/102879...

const callbacks = []
let pending = false

/**
 * 做了三件事:
 *   1、将 pending 置为 false
 *   2、清空 callbacks 数组
 *   3、执行 callbacks 数组中的每一个函数(比如 flushSchedulerQueue、用户调用 nextTick 传递的回调函数)
 */
function flushCallbacks () {
  pending = false
  const copies = callbacks.slice(0)
  callbacks.length = 0
  // 遍历 callbacks 数组,执行其中存储的每个 flushSchedulerQueue 函数
  for (let i = 0; i < copies.length; i++) {
    copies[i]()
  }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题