vue关于nextTick

303 阅读1分钟

vue@2.6.10 src/core/util/next-tick.js

function flushCallbacks () {
  pending = false
  const copies = callbacks.slice(0)
  callbacks.length = 0
  for (let i = 0; i < copies.length; i++) {
    copies[i]()
  }
}

其中

pending = false

为什么要放在for循环之前,如果移到for循环之后会发生什么呢?

  如果放在for循环之后,copies中的函数如果有调用nextTick将被存到callbacks 中,但是此时pending为true ,则不会将flushCallbacks放到新一轮的任务中,在此次flushCallbacks完成后的下一次调用nextTickflushCallbacks将不会被执行