У меня есть функция, которая делает fetch нужного документа:
// ничего особенного, просто fetch и преобразование полученного json-а
async function fetchMelodyPassport(url) {
const response = await fetch(url);
const melody_passport_json = await response.json();
return melody_passport_json.content.rendered;
}
И есть функция, которая в определённый момент её запускает:
async function createMelodyPassport() {
let counter = 0;
..........
const melodyPassport = await fetchMelodyPassport(url);
const intervalId = setInterval(() => {
if (!melodyPassport) {
counter += 1;
console.log(counter);
if (counter == 7) {
const error = preloader.preloader.querySelector(".music-preloader p");
error.textContent = "Время ожидания превышено. Пожалуйста, перезагрузите страницу или вернитесь попозже";
return;
}
}
clearInterval(intervalId)
}, 1000);
melody.innerHTML = melodyPassport;
}
Часть кода с setInterval - я бы хотел, чтобы если время загрузки затянулось больше 7 секунд, выводить оповещение типа “Перезагрузите страницу или зайдите попозже”.
Вопрос в следующем: средствами браузера не удаётся эмулировать очень медленную загрузку, но почему-то мне кажется, что setInterval не запустится, пока fetch не завершится… Избавиться от await перед ней я не могу - далее идёт строка, которая должна дождаться получения ответа и потом этот документ вставить в нужное место, если он загрузится. Как сделать, чтобы setInterval запускался одновременно с fetch?
P.S. Это выдержка - часть модуля js, file.mjs