PressureObserver:observe() 方法

可用性有限

此功能不是基线功能,因为它在一些使用最广泛的浏览器中无法正常工作。

实验性:这是一个实验性技术
在生产环境中使用此功能之前,请仔细查看浏览器兼容性表格

安全上下文:此功能仅在安全上下文(HTTPS)中可用,在某些或所有支持的浏览器中。

observe() 方法是 PressureObserver 接口的一部分,它指示压力观察器开始观察压力变化。调用此方法后,观察器将在观察到指定 source 的压力记录时调用其回调函数。

获取匹配的 PressureRecord 时,将调用压力观察器的回调函数。

语法

js
observe(source)
observe(source, options)

参数

source

一个字符串,指定要观察的source。有关源列表,请参阅PressureRecord.source,有关用户代理支持的源列表,请参阅PressureObserver.knownSources

options 可选

一个对象,用于使用以下属性配置观察

sampleInterval 可选

一个数字,表示以毫秒为单位的请求采样间隔。默认为 0,表示它将以系统能够处理的最快速度获取更新。

返回值

一个Promise,它以undefined 完成。

异常

NotAllowedError DOMException

如果计算压力 APIcompute-pressure 权限策略 禁止,则抛出此异常。

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

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。