PerformanceObserver: observe() 方法

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2020 年 1 月⁩ 起,所有主流浏览器均已支持。

注意:此功能在 Web Workers 中可用。

PerformanceObserver 接口的 observe() 方法用于指定要观察的性能条目类型集合。

有关条目类型的列表,请参阅 PerformanceEntry.entryType,有关用户代理支持的条目类型的列表,请参阅 PerformanceObserver.supportedEntryTypes

当记录到匹配的性能条目时,将在创建 PerformanceObserver 时设置的性能观察者的回调函数会被调用。

语法

js
observe(options)

参数

options

一个具有以下可能成员的对象

buffered

一个布尔标志,用于指示是否应将缓冲的条目排队到观察者的缓冲区中。只能与 type 选项一起使用。

durationThreshold

一个 DOMHighResTimeStamp,定义 PerformanceEventTiming 条目的阈值。默认为 104ms,并四舍五入到最接近的 8ms。最低可能阈值为 16ms。不能与 entryTypes 选项一起使用。

entryTypes

一个字符串数组,每个字符串指定一个要观察的性能条目类型。不能与 typebuffereddurationThreshold 选项一起使用。

有关有效性能条目类型名称的列表,请参阅 PerformanceEntry.entryType。不识别的类型将被忽略,但浏览器可能会向控制台输出警告消息以帮助开发人员调试其代码。如果没有找到有效的类型,observe() 将不起作用。

type

一个单独的字符串,指定要观察的单个性能条目类型。不能与 entryTypes 选项一起使用。

返回值

无(undefined)。

示例

观察多个性能条目类型

此示例创建了一个 PerformanceObserver,并使用 observe() 方法中提供的 entryTypes 选项来观察 "mark""measure" 条目类型。

js
const observer = new PerformanceObserver((list, obj) => {
  list.getEntries().forEach((entry) => {
    // Process "mark" and "measure" events
  });
});
observer.observe({ entryTypes: ["mark", "measure"] });

观察单个性能条目类型

以下示例使用 bufferedtype 配置选项检索已缓冲的事件并订阅资源计时事件(PerformanceResourceTiming)的新事件。每当需要配置观察者使用 buffereddurationThreshold 选项时,请使用 type 而非 entryType。否则,收集多种性能条目类型将无法正常工作。

js
const observer = new PerformanceObserver((list, obj) => {
  list.getEntries().forEach((entry) => {
    // Process "resource" events
  });
});
observer.observe({ type: "resource", buffered: true });

规范

规范
性能时间线
# dom-performanceobserver-observe

浏览器兼容性