Я пытаюсь реализовать некоторую логику повторных попыток для обработки случаев, когда элемент <audio />
встречает сетевую ошибку (HTMLMediaElement.error
) в TypeScript React.Пока у меня есть базовая повторная попытка, которая обновляет src
на аудиоэлементе, что, кажется, заставляет его повторно выбирать.
Я пытался заставить Promises работать в течение нескольких часов, ноЯ изо всех сил пытаюсь отобразить общие примеры онлайн (обычно в JavaScript) в мою конкретную реализацию в TypeScript.
Вот соответствующий код из того, что у меня есть:
private element: HTMLAudioElement | null = null;
public componentDidMount() {
if (this.element !== null) {
this.element.addEventListener("error", this.retry, false);
}
}
private readonly retry = () => {
if (this.element !== null && this.element.error !== null) {
if (this.element.error.code === 2 && this.props.src !== undefined) {
this.element.src = this.props.src;
}
}
};
public render() {
const { src } = this.props;
return (
<audio ref={ref => (this.element = ref)} src={src} />
);
}
Как можноЯ заменил этот код решением TypeScript на основе Promise с максимальными попытками по времени, например, 3 попытки с 5 секундами между каждым?