RTCStatsReport: forEach() 方法

Baseline 已广泛支持

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

RTCStatsReport 接口的 forEach() 方法会按照插入顺序,对 RTCStatsReport 对象中的每一对键/值执行一次提供的函数。

键是监视的统计对象(统计数据来源于这些对象)的唯一 id 值,而关联的值是统计信息字典对象

该方法在其他方面与 Map.prototype.forEach() 相同。

语法

js
forEach(callbackFn)
forEach(callbackFn, thisArg)

参数

callbackFn

一个函数,为报告中的每个条目执行。该函数将使用以下参数调用:

report

每次迭代的统计报告。这可以是任何统计信息字典类型

id

一个唯一的字符串,用于标识统计数据来源的监视对象。

map

正在迭代的报告。

thisArg 可选

执行 callbackFn 时用作 this 的值。

返回值

undefined.

示例

给定一个变量 myPeerConnection,它是 RTCPeerConnection 的一个实例,代码调用 getStats() 并使用 await 等待统计报告。然后,它使用 RTCStatsReport.forEach() 迭代报告,并筛选出 typeinbound-rtpkindvideo 的字典。对于匹配的字典,它会记录入站视频的 framesPerSecond 属性。

js
const stats = await myPeerConnection.getStats();

stats.forEach((report) => {
  if (report.type === "inbound-rtp" && report.kind === "video") {
    // Log the frame rate
    console.log(report.framesPerSecond);
  }
});

规范

规范
WebRTC:浏览器中的实时通信
# dom-rtcstatsreport

浏览器兼容性

另见