vue中nextTick模块的代码大概110行。比较容易理解。模块所在的目录结构为:vue-dev\src\core\util\next-tick.js。
nextTick方法有两个参数:参数一为加入异步任务队列的回调函数;参数二为传入的绑定的环境上下文,也叫执行上下文。
源码如下:
/* @flow */
/* globals MutationObserver */
import {
noop } from 'shared/util'
import {
handleError } from './error'
import {
isIE, isIOS, isNative } from './env'
export let isUsingMicroTask = false
const callbacks = []
let pending = false
function flushCallbacks () {
pending = false
const copies = callbacks.slice(0)
callbacks.length = 0
for (let i = 0; i < copies.length; i++) {
copies[i]()
}
}
// Here we have async deferring wrappers using microtasks.
// In 2.5 we used (macro) tasks (in combination with microtasks).
// However, it has subtle p