我使用数组pc将 RTCPeerConnections 从 1 个客户端保存到其他客户端,然后调用createOffer.
pc是全局变量,但有一个错误:在 createOffer 函数中,我得到的pc[list[i]]是undefined. 我如何解决它?
for (var i = 0; i<list.length - 1; i++) {
pc[list[i]] = createPC(list[i]);
pc[list[i]].createOffer(function (localDesc) {
pc[list[i]].setLocalDescription(localDesc);
send(localDesc, list[i]);
}, doNothing, constraints);
}
Run Code Online (Sandbox Code Playgroud)
一定是 for 循环内部回调的常见问题,尝试绑定的值i:
for (var i = 0; i<list.length - 1; i++) {
pc[list[i]] = createPC(list[i]);
(function(i){
pc[list[i]].createOffer(function (localDesc) {
pc[list[i]].setLocalDescription(localDesc);
send(localDesc, list[i]);
}, doNothing, constraints);
})(i);
}
Run Code Online (Sandbox Code Playgroud)
编辑:
另一种选择可能是(我假设该列表是唯一 ID 列表):
...
for (var i = 0; i<list.length - 1; i++) {
var id = list[i];
pc[id] = createPC(id);
pc[id].createOffer(onOffer.bind({id:id}), doNothing, constraints);
}
...
function onOffer(localDesc){
pc[this.id].setLocalDescription(localDesc);
send(localDesc, this.id);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2226 次 |
| 最近记录: |