我使用数组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);
}
答案 0 :(得分:4)
必须是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);
}
编辑:
另一个选项可能是(我假设列表是唯一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);
}