我最近也遇到了这个问题-
这可能是
play()和之间的竞争条件
pause()。。
正如@Patrick指出的那样,
pause它不会返回诺言(或其他任何东西),因此上述解决方案将行不通。虽然MDN
pause()在的Media元素的WC3草案中没有上的文档,但它说:
media.pause()
将暂停的属性设置为true,必要时加载媒体资源。
因此,也可以
paused在其超时回调中检查属性。
基于这个出色的SO答案,您可以通过以下方法检查视频是否正在播放(或未播放),因此可以安全地触发play()而不出错。
var isPlaying = video.currentTime > 0 && !video.paused && !video.ended && video.readyState > 2;if (!isPlaying) { video.play();}


