自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

NextTick 在 Vue 中如何發(fā)揮作用的?其實大部分人一知半解

開發(fā) 前端
nextTick 為什么是微任務(wù),但是能獲取到最新DOM呢?因為到了 nextTick 這一步的時候,DOM樹已經(jīng)更新完了,只是還沒渲染到頁面上而已,而我們能通過DOM的一些API去獲取到最新的DOM樹內(nèi)容,比如 document.getElementById 這類方法。

大家好,我是林三心,用最通俗易懂的話講最難的知識點是我的座右銘,基礎(chǔ)是進(jìn)階的前提是我的初心~

背景

我發(fā)現(xiàn)很多人背八股文真的背傻了,只知道 nextTick = 微任務(wù),其他啥都不知道,也不去了解原因,甚至大部分理解的都是錯的?

先來回顧下nextTick的使用,因為 Vue 的響應(yīng)式變量是異步更新DOM的,所以當(dāng)你變量修改的時候,并不能第一時間拿到最新的 DOM,而在nextTick中就可以拿到最新的 DOM

圖片圖片

先問是不是,再問為什么

很多人認(rèn)為 nextTick = 微任務(wù),這其實是錯的,正確應(yīng)該是 nextTick 優(yōu)先是 微任務(wù),不信可以直接看 Vue 的源碼

在src\core\util\next-tick.ts 文件中,可以看到 nextTick 優(yōu)先級如下:

  • Promise.resolve().then:微任務(wù)
  • MutationObserver:宏任務(wù)
  • setImmediate:宏任務(wù)
  • setTimeout:宏任務(wù)

圖片圖片

所以說 nextTick 只是優(yōu)先選擇微任務(wù)而已,當(dāng)瀏覽器不支持微任務(wù)的時候,它還是會選擇宏任務(wù)

為啥優(yōu)先微任務(wù)?

2023年面試了怎么也得有100個人了,大部分都不能比較好的回答這個問題:nextTick為啥優(yōu)先選擇微任務(wù)?

首先聲明一個點:Vue 的異步更新DOM 其實也是微任務(wù),比如下面的例子,你一次性更新了三次變量,其實會生成三個更新DOM微任務(wù)到隊列中

圖片圖片

你這個時候放一個 nextTick 在后面,那就是在三個微任務(wù)后面再放一個微任務(wù)而已

圖片圖片

我們都知道微任務(wù)是在UI渲染之前執(zhí)行的,那為什么 nextTick 能拿到最新的 DOM 呢?

圖片圖片

更新 ≠ 渲染

其實我們要明白一個點:更新 ≠ 渲染,前面三個更新微任務(wù)只是更新DOM,修改的是DOM樹,而使用 document.getElementById這類方法去獲取到的就是DOM樹的內(nèi)容

圖片圖片

所以 nextTick 為什么是微任務(wù),但是能獲取到最新DOM呢?因為到了 nextTick 這一步的時候,DOM樹已經(jīng)更新完了,只是還沒渲染到頁面上而已,而我們能通過DOM的一些API去獲取到最新的DOM樹內(nèi)容,比如 document.getElementById 這類方法

所以,與其說 nextTick 能獲取到最新的DOM,還不如說 nextTick 能獲取到最新的DOM樹信息

責(zé)任編輯:武曉燕 來源: 前端之神
相關(guān)推薦

2022-01-16 20:25:57

WebAssembly網(wǎng)絡(luò)

2021-05-06 10:26:49

穩(wěn)定幣加密貨幣

2022-02-20 21:44:29

軟件系統(tǒng)架構(gòu)

2020-06-17 14:13:29

索引數(shù)據(jù)庫場景

2021-10-18 11:42:23

數(shù)據(jù)系統(tǒng)權(quán)衡

2020-03-09 09:56:13

高并發(fā)高可用架構(gòu)

2022-11-16 12:48:38

2021-03-26 00:20:34

NFT區(qū)塊鏈數(shù)據(jù)庫

2020-02-04 18:27:38

人工智能倫理學(xué)一知半解

2022-01-26 09:53:23

計算機體系結(jié)構(gòu)

2016-12-12 18:45:08

Data Mining大數(shù)據(jù)

2012-06-07 16:16:43

JavaScript

2025-01-26 16:04:09

2018-11-25 21:53:10

人工智能AI開發(fā)者

2020-07-03 08:54:32

云計算混合云公共云

2023-10-10 11:27:23

人工智能智能辦公

2021-08-17 08:00:00

自然語言人工智能機器學(xué)習(xí)

2022-03-28 13:25:51

AI數(shù)據(jù)中心耗電量

2018-10-16 10:13:06

2020-05-07 10:29:29

瀏覽器Sessioncookie
點贊
收藏

51CTO技術(shù)棧公眾號