欧美日韩精品一区二区在线线,一级无码在线收看,精品国产高清91,久久精品欧美电影

# 獲取更新性能統(tǒng)計信息

基礎(chǔ)庫 2.12.0 開始支持,低版本需做兼容處理。

如果想要知道 setData 引發(fā)界面更新的開銷,可以使用更新性能統(tǒng)計信息接口。它將返回每次更新中主要更新步驟發(fā)生的時間戳,可以用來大體上估計自定義組件(或頁面)更新性能。例如:

Component({
  attached() { // 調(diào)用時機不能早于 attached
    this.setUpdatePerformanceListener({withDataPaths: true}, (res) => {
      console.log(res)
    })
  }
})

setUpdatePerformanceListener 方法接受一個 options 對象和回調(diào)函數(shù) listener 作為參數(shù)。

其中, options 對象包含以下字段:

字段 類型 說明
withDataPaths Boolean 是否返回變更的 data 字段信息

listeners 返回攜帶一個 res 對象,表示一次由 setData 引發(fā)的 更新過程 。根據(jù) setData 調(diào)用時機的不同,更新過程大體可以分為三類:

  1. 基本更新 ,它有一個唯一的 updateProcessId ;
  2. 子更新 ,它是另一個基本更新的一個子步驟,也有唯一的 updateProcessId ,但還有一個 parentUpdateProcessId
  3. 被合并更新 ,它被合并到了另一個基本更新或子更新過程中,無法被獨立統(tǒng)計。

每次成功的 setData 調(diào)用都會產(chǎn)生一個更新過程,使得 listener 回調(diào)一次。不過 setData 究竟觸發(fā)了哪類更新過程很難判斷,更新性能好壞與其具體是哪類更新也沒有必然聯(lián)系,只是它們的返回值參數(shù)有所不同。

res 中包含以下字段:

字段 類型 說明
updateProcessId Number 此次更新過程的 ID
parentUpdateProcessId Number 對于子更新,返回它所屬的更新過程 ID
isMergedUpdate Boolean 是否是被合并更新,如果是,則 updateProcessId 表示被合并到的更新過程 ID
dataPaths Array 此次更新的 data 字段信息,只有 withDataPaths 設(shè)為 true 時才會返回
pendingStartTimestamp Number 此次更新進入等待隊列時的時間戳
updateStartTimestamp Number 更新運算開始時的時間戳
updateEndTimestamp Number 更新運算結(jié)束時的時間戳

說明:

  • setUpdatePerformanceListener 只會激活當(dāng)前組件或頁面的統(tǒng)計, parentUpdateProcessId 有可能是其他組件或者頁面的更新過程 ID 而未被統(tǒng)計回調(diào),如果想要知道頁面內(nèi)所有的更新過程,需要在所有組件中都調(diào)用 setUpdatePerformanceListener ;
  • 統(tǒng)計本身有一點點開銷,如果想要禁用統(tǒng)計,調(diào)用 setUpdatePerformanceListener 時傳入第二個參數(shù) listenernull 即可。