首先Vue 在更新 DOM 時是異步執行的,也就是說數據變了,DOM不會立即改變,那么我們是如何知道DOM什么時候會改變呢?
也就是說如何知道異步后的觸發時機呢? 可以通過nextTick方法,這個方法在源碼內,先監聽是否具備Promise.then,利用promise來監聽,如果當前環境不支持promise,那么就降級采用MutationObserver,如果MutationObserver不支持的話,那么就降級采用setImmediate,如果setImmediate不支持的話,那么就使用setTimeout(fn, 0)。
所以說nextTick和setTimeout區別總結就是:nextTick會先嘗試使用promise、MutationObserver、setImmediate這些技術去監聽,如果都不支持才會采用setTimeout