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

浏览器兼容性