RTCStatsReport: keys() 方法

Baseline 已广泛支持

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

RTCStatsReport 接口的 keys() 方法返回一个新的迭代器对象,该对象可用于按插入顺序遍历 RTCStatsReport 对象中每个元素的键。

RTCStatsReport 中的键是唯一的字符串 id 值,这些值表示从中派生统计信息的受监控统计信息对象。

此方法与其他方面与 Map.prototype.keys() 相同。

语法

js
keys()

参数

无。

返回值

一个新的可迭代迭代器对象

示例

此示例展示了如何使用 keys() 返回的迭代器遍历 RTCStatsReport

给定一个变量 myPeerConnection,它是 RTCPeerConnection 的一个实例,该代码会调用 await 版本的 getStats() 来等待统计信息报告。然后,它使用 for...of 循环和 keys() 返回的迭代器来遍历 ID。每个 ID 都用于获取相应的统计信息字典。类型为 outbound-rtp 的统计信息对象的属性将被记录到控制台(其他对象将被丢弃)。

js
const stats = await myPeerConnection.getStats();

for (const id of stats.keys()) {
  // Get dictionary associated with key (id)
  const stat = stats.get(id);
  if (stat.type !== "outbound-rtp") continue;
  Object.keys(stat).forEach((statName) => {
    console.log(`${statName}: ${report[statName]}`);
  });
}

请注意,此示例有些牵强。您可以更轻松地使用 entries()values() 进行迭代,而不必将 ID 映射到值。您甚至可以直接迭代 RTCStatsReport,因为它具有 [Symbol.iterator]() 方法!

规范

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

浏览器兼容性

另见