gpt4 book ai didi

javascript - 在Javascript中,如何在发生错误时反复/递归地重新加载Audio对象?

转载 作者:行者123 更新时间:2023-12-03 01:13:05 25 4
gpt4 key购买 nike

我正在制作依赖于来自URL的流音频的软件,该URL用于存储在Google云端硬盘中的文件,在空闲大约5分钟后会超时并失败。这样做时,我希望刷新音频链接,并将时间设置为以前的音频。
要详细说明这个想法,请参见下面的示例代码:

export default class ReloadingAudio {
constructor(url) {
this.audio = new Audio(url)
this.audio.onerror = () => {
this.audio = new Audio(url)
}
}
}
第一次重新加载音频效果很好,但是由于创建的第二个新音频没有onerror功能,因此当再次超时时,不会重新加载音频。
我想知道,首先,是否有任何方法可以防止音频在Google驱动器文件上超时(它变成403禁止的错误),在这种情况下,我不需要这样做,其次,有没有一种好的方法来递归定义onerror函数,以便无论音频超时多少次它都会重复加载?
谢谢!
编辑
想补充一下,我确实找到了一个解决方案,但是我尝试只是更改AudioElement的src,并且这同样是一种有效的解决方案(而且我想更好地用于存储目的。)但是,出于好奇,这是一种递归的方法重置音频,您可以定义如下功能:

export default class ReloadingAudio {
constructor(url) {
this.audio = new Audio(url)

const self = this

function onerrorFunction() {
self.audio = new Audio(url)
self.audio.onerror = onerrorFunction
}

this.audio.onerror = onerrorFunction
}
}

最佳答案

我不知道如何防止由Google云端硬盘引起的超时,但是您可以通过将src重置为现有url上的AudioElement来获得预期的行为。

this.audio.onerror = () => {
this.audio.src = url;
}

关于javascript - 在Javascript中,如何在发生错误时反复/递归地重新加载Audio对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63208530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com