Я делаю программное обеспечение, которое полагается на потоковую передачу звука с URL-адреса для файлов, хранящихся на Google Диске, которые будут отключаться по таймауту и выходить из строя примерно через 5 минут простоя. Когда это произойдет, я хотел бы, чтобы звуковая ссылка обновлялась sh, а также устанавливала время там, где раньше был звук.
Чтобы изложить идею, см. Пример кода ниже:
export default class ReloadingAudio {
constructor(url) {
this.audio = new Audio(url)
this.audio.onerror = () => {
this.audio = new Audio(url)
}
}
}
Это отлично работает для перезагрузки звука в первый раз, но поскольку второй созданный новый звук не имеет функции onerror, когда он снова истекает, он не перезагружается.
Мне было интересно, хорошо , во-первых, есть ли способ предотвратить тайм-аут звука в файлах диска Google в первую очередь (это превращается в запрещенную ошибку 403), и в этом случае мне не нужно этого делать, а во-вторых, есть ли хороший способ рекурсивно определить функцию onerror таким образом, чтобы независимо от того, сколько раз истечет время ожидания звука, он будет многократно перезагружаться?
Спасибо!
Edit
Хотел добавить, я нашел решение для этого, но я попытался просто изменить AudioElement sr c, и это было одинаково эффективным решением (и я думаю, что лучше для целей памяти). Однако, для любопытных, вот способ рекурсивного сброса звука, вы можете определить функцию следующим образом:
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
}
}