WebRTC连接中添加ICE候选者的顺序及addIceCandidate调用是否需等待前一个Promise完成的疑问
WebRTC连接中添加ICE候选者的顺序及addIceCandidate调用是否需等待前一个Promise完成的疑问
嘿,这个问题问到点子上了!我来给你拆解清楚:
首先,你完全不需要强制等待前一个addIceCandidate()返回的Promise完成(不管是resolved还是rejected),再去调用下一个。
原因很简单:浏览器的WebRTC底层已经帮你处理了候选者的队列和顺序逻辑。哪怕你连续调用addIceCandidate()传入多个远端候选,浏览器会自动把这些请求排队,按照正确的顺序去处理,不会因为你没等前一个Promise就乱套。
不过这里有两个小细节需要注意:
- 如果某个
addIceCandidate()的Promise被rejected了,你最好还是捕获这个错误,排查下原因(比如候选格式无效、连接状态异常等),但这并不影响后续候选的添加操作——只要连接本身还处于有效状态,后续调用依然会正常被处理。 - 唯一的例外情况:如果你的
RTCPeerConnection已经处于关闭(closed)或者失败(failed)状态,那后续的addIceCandidate()肯定会失败,这时候就没必要继续调用了。
实际开发里,大部分WebRTC项目都是收到远端候选就立刻调用addIceCandidate(),不会特意等待上一个Promise完成,这种做法是完全合规且高效的。
备注:内容来源于stack exchange,提问作者LUN
相关产品推荐
相关产品推荐

