变量被篡改
channel.onvideo = (pid, track) => {
const remote = this.$refs['remote'] as HTMLDivElement
const video = this.createVideo(new MediaStream([track]))
remote.appendChild(video);
channel.onvideoclose = (pid1, track1) => {
console.log(pid1, track1, pid, track);
if (pid1 === pid && track1 === track) {
remote.removeChild(video);
}
}
}以typescript完成的上述示例代码所示,channel.onvideo绑定了一个函数,并且在onvideo内部,channel.onvideochlose绑定了一个函数,并且该函数内使用了onvideo的变量。会导致什么问题?onvideo每被执行一次,onvideoclose就会重新执行一次函数绑定操作,与此同时,onvideo内部的变量已经发生改变了,会导致onvideoclose函数内部所使用的onvideo的变量也会随之发生变化。假设onvideo在第一次被执行的时候,pid已经等于123了,但是在onvideo在第二次被执行的时候,pid变成234了,onvideoclose内部所引用的onvideo变量pid也随之变成了234。
DISCUSSION
评论
还没有公开评论,欢迎留下想法。