我正在尝试通过 WebRTC 分块发送文件,我想知道是否可以创建一个回调函数,以便在 RTCDataChannel.send()
完成发送每个 block 之后调用文件。
RTCDataChannel.send()
是同步/阻塞调用吗?如果是这样,我的回调可以在 .send()
之后的行执行。
如果 .send()
是异步/非阻塞的,那么这会变得很棘手,因为 .send()
似乎不接受回调函数,我想避免使用缓冲区和超时。
最佳答案
send
method正在阻塞。然而,它不会等到数据通过网络,而只是将数据放在内部缓冲区中,数据稍后可能会从该缓冲区发送(或与脚本执行并行)。
未传输的数据量可通过 bufferedAmount
property 获取。 ,它将通过每次 send()
调用同步增加(并且在下一个事件循环之前不会更新)。
因此,您可以使包装器异步,并在当前缓冲的数据“太多”时(根据您认为合适的标准),在实际调用 send()
之前设置超时。
关于javascript - RTCDataChannel send() 是同步/阻塞调用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24074961/