PressureObserver: observe() 方法

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

實驗性: 這是一項實驗性技術
在生產中使用此技術之前,請仔細檢查瀏覽器相容性表格

注意:此功能在 Web Workers 中可用,但 Service Workers 除外。

安全上下文: 此功能僅在安全上下文(HTTPS)中可用,且支援此功能的瀏覽器數量有限。

PressureObserver 介面的 observe() 方法用於告知壓力觀察器開始觀察壓力變化。呼叫此方法後,當觀察到指定 source 的壓力記錄時,觀察器將呼叫其回撥函式。

獲取到匹配的 PressureRecord 時,將呼叫壓力觀察器的回撥函式。

語法

js
observe(source)
observe(source, options)

引數

source

一個字串,指定要觀察的 source。有關源列表,請參閱 PressureRecord.source,有關使用者代理支援的源列表,請參閱 PressureObserver.knownSources

options 可選

一個物件,用於配置觀察,具有以下屬性:

sampleInterval 可選

一個數字,表示請求的取樣間隔(以毫秒為單位)。預設為 0,表示系統能夠處理的速度有多快,它就會以多快的速度獲取更新。

返回值

一個 Promise,解析為 undefined

異常

NotAllowedError DOMException

如果 Compute Pressure APIcompute-pressure Permissions Policy 禁止,則會丟擲此錯誤。

NotSupportedError DOMException

如果 source 引數不是此使用者代理支援的源之一,則會丟擲此錯誤。

示例

記錄當前壓力

此示例建立了一個 PressureObserver,並在每次壓力變化時採取行動。取樣間隔設定為 1000 毫秒,這意味著最多每秒會有一次更新。

js
function callback(records) {
  const lastRecord = records[records.length - 1];
  console.log(`Current pressure ${lastRecord.state}`);
  if (lastRecord.state === "critical") {
    // disable video feeds
  } else if (lastRecord.state === "serious") {
    // disable video filter effects
  } else {
    // enable all video feeds and filter effects
  }
}

try {
  const observer = new PressureObserver(callback);
  await observer.observe("cpu", {
    sampleInterval: 1000, // 1000ms
  });
} catch (error) {
  // report error setting up the observer
}

規範

規範
計算壓力級別 1
# the-observe-method

瀏覽器相容性