nextTick中的降级处理

590 阅读1分钟

定义

  • 将回调延迟到下次DOM更新循环之后执行
  • 通常用于在修改数据之后使用这个方法,在回调中获取更新后的DOM
Vue.nextTick([callback, context]);
vm.$nextTick([callback])

原理

利用微任务会在宏任务队列执行完毕之后立即执行的这个机制,把任务放在微任务中,用promise实现。

  • 但是有的浏览器不支持promise,这就涉及vue中的降级策略了 nextTick的最佳选择就是微任务,但是promise是es6的,就会涉及兼容问题,所以vue求其次选择宏任务作为降级。 setTimeout和setImmediate属于宏任务,setTimeout所有浏览器都兼容,但是执行有延迟,是最后的兜底方案,setImmediate可以兼容ie浏览器。