十二.$nextTick实现的原理

65 阅读1分钟
  • vue.js内部是先去用Promise.then、MutationObserver这二个微任务的api来实现如果发现浏览器不支持,换成用宏任务setTimeout来实现的(优雅降级)

  • Promise.then > MutationObserver > setTimeout 尽可能快的知道什么时候dom更新了

  • 思路

    • 把回调函数放入callbacks等待执行
    • 将执行函数放到微任务或者宏任务中(优雅降级)
    • 事件循环到了微任务或者宏任务,执行函数依次执行callbacks中的回调

核心要回答的:Promise.then > MutationObserver > setTimeout (优雅降级)