挣扎于js承诺,foreach承诺添加结果。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了挣扎于js承诺,foreach承诺添加结果。相关的知识,希望对你有一定的参考价值。
谁能帮我解决这个问题,我想检索一下用webrtc发送了多少数据。但我无法理解这些承诺。
我需要遍历发送者列表,但对于每个发送者,我需要等待承诺,然后才能继续下一个发送者。
// Reset datacounter
Client.DataUsed = 0;
// Get senders (audio/video)
const senders = Client.WebcamConnection.getSenders();
// Iterate through senders
senders.forEach(sender =>
// Get the stats then await the promise using then
sender.getStats().then(stat =>
// Iterate through raports of stat
stat.forEach(report =>
// Check if is the right raport
if (report.type === 'outbound-rtp')
// Add the byte count to the datacounter
Client.DataUsed += report.bytesSent + report.headerBytesSent;
);
);
);
// Do something with the Client.DataUsed
答案
就像你说的,你不能使用结果,直到所有的承诺被解决。你可以使用 Promise.all
伺机而动 ***
评论:
// Reset datacounter
Client.DataUsed = 0;
// Get senders (audio/video)
const senders = Client.WebcamConnection.getSenders();
// ***Create an array of promises, one for each sender, and pass it into
// `Promise.all`***
Promise.all(senders.map(sender =>
// *** Return the promise created by `then` so `Promise.all` can
// wait for it***
// Get the stats then await the promise using then
return sender.getStats().then(stat =>
// Iterate through raports of stat
stat.forEach(report =>
// Check if is the right raport
if (report.type === 'outbound-rtp')
// Add the byte count to the datacounter
Client.DataUsed += report.bytesSent + report.headerBytesSent;
);
);
)
.then(() =>
// Do something with the Client.DataUsed
)
.catch(error =>
// Handle/report error
);
以上是关于挣扎于js承诺,foreach承诺添加结果。的主要内容,如果未能解决你的问题,请参考以下文章