单独客户中的两个video
玩家正在通过交换播放/暂停请求进行同步:
$(videoA).on("pause", e => sendRequestToPauseVideoB());
$(videoA).on("play", e => sendRequestToPlayVideoB());
$(videoB).on("pause", e => sendRequestToPauseVideoA());
$(videoB).on("play", e => sendRequestToPlayVideoA());
当相应的视频收到播放或暂停请求时,它会分别拨打video.play()
或video.pause()
。
问题
当videoA暂停时,它会暂停videoB,会尝试暂停VideoA 。
这个通常工作正常,但假设videoA暂停,发送一个请求暂停视频B,但同时videoB已经播放,发送一个视频播放请求。
因此,有一个暂停请求传入videoB,一个播放请求传入videoA,这将导致两个视频切换(播放/暂停)状态和告诉对方改变到这个新状态,导致无限循环。
为什么会发生
基本上,如果视频收到播放/暂停请求,则应不将播放/暂停请求发送回其他视频
在 on Play 和 on Pause 事件中,视频是否可以推断如果该事件是由请求引起的 ?当请求调用video.play()
或video.pause()
时,或以某种方式阻止播放/暂停事件被触发?
你对此有什么好的解决方案吗?