使用的typescript
const callbacks: Array<Function> = []
let pending = false
const flushCallbacks: Function = (): void =>{
pending = false;
if(callbacks && callbacks.length!==0){
const eventList: Array<Function> = [...callbacks];
callbacks.length = 0;
eventList.forEach(func=>{
func()
})
}
}
const timeFunc: Function = (): void =>{
if(typeof Promise !== 'undefined'){
Promise.resolve().then(()=>{
flushCallbacks()
})
}else{
setTimeout(() => {
flushCallbacks()
}, 0);
}
}
export const nextTick: Function = (cb: Function): void=>{
if(cb){
callbacks.push(()=>{
cb()
})
}
if(!pending){
pending = true
timeFunc()
}
}