首先Vue 在更新 DOM 時是異步執(zhí)行的,也就是說數(shù)據(jù)變了,DOM不會立即改變,那么我們是如何知道DOM什么時候會改變呢?也就是說如何知道異步后的觸發(fā)時機呢?
可以通過nextTick方法,這個方法在源碼內(nèi),先監(jiān)聽是否具備Promise.then,利用promise來監(jiān)聽,如果當前環(huán)境不支持promise,那么就降級采用MutationObserver,如果MutationObserver不支持的話,那么就降級采用setImmediate,如果setImmediate不支持的話,那么就使用setTimeout(fn, 0)。
所以說nextTick和setTimeout區(qū)別總結(jié)就是:nextTick會先嘗試使用promise、MutationObserver、setImmediate這些技術(shù)去監(jiān)聽,如果都不支持才會采用setTimeout
更多關(guān)于前端培訓(xùn)的問題,歡迎咨詢千鋒教育在線名師,如果想要了解我們的師資、課程、項目實操的話可以點擊咨詢課程顧問,獲取試聽資格來試聽我們的課程,在線零距離接觸千鋒教育大咖名師,讓你輕松從入門到精通。