Javascript 为什么在设置src时音频元素会中止事件?
我不清楚在HTML5Javascript 为什么在设置src时音频元素会中止事件?,javascript,html,html5-audio,Javascript,Html,Html5 Audio,我不清楚在HTML5audio元素上设置src时会发生什么,规范也没有太大帮助 具体地说,我的问题是: const audio = new Audio() audio.src = "first.mp3" audio.onratechange = e => console.log('[RATE CHANGE]', e.target.playbackRate) audio.playbackRate = 0.5 audio.src = "second.mp3" audio.src = "th
audio
元素上设置src
时会发生什么,规范也没有太大帮助
具体地说,我的问题是:
const audio = new Audio()
audio.src = "first.mp3"
audio.onratechange = e => console.log('[RATE CHANGE]', e.target.playbackRate)
audio.playbackRate = 0.5
audio.src = "second.mp3"
audio.src = "third.mp3"
设置playbackRate
应该触发ratechange
事件。但在上面的示例中,发生的情况是通过设置src
,中止了“0.5”的事件(?)-相反,我们得到了“1”的ratechange
,这源于将playbackRate
重置为defaultPlaybackRate
第一个被认为是不可取消的费率更改事件发生了什么
此外,此ratechange
事件也不会触发,因为再次设置src
也会吞噬此事件。因此,我们最终必须设置playbackRate
,并且根本不触发ratechange
事件
见:
我想我遗漏了一些关于JS事件系统如何工作的基本信息???您是否尝试过使用setTimeout设置src?JavaScript是单线程的,所以您设置的所有事情都是一次完成的,所以最可能发生的情况是系统只看到您将src设置为third.mp3并处理它。将src设置为零setTimeout将在大多数时间保留事件,但不总是,setTimeout>10ms似乎可以工作,但这相当混乱,不是吗?