Подскажите в чем может быть проблема.
Хочу сделать интервал на получаение данных, но если статус ответа не равен 200, тогда останавливаю интервал и создаю новый только через 30 секунд.
Код ниже не работает.
let getCurrent = () => {
fetch('https://radio.mcm.fm/')
.then(function(res) {
if (res.status !== 200) {
clearInterval(timerId)
setTimeout(() => {
const timerId = setInterval(() => {
getCurrent()
}, 3000)
}, 30000)
return
}
})
.then(res => {
this.props.importCurrentSong(res.current_track)
})
.catch(function(err) {
console.log('Fetch Error :-S', err);
});
}
const timerId = setInterval(() => {
getCurrent()
}, 3000)
На самом деле тут не нужен setInterval
, удобнее в обработчике каждого запроса устанавливать отложенный таймер на следующий запрос:
let getCurrent = () => {
console.log(`connecting... ${new Date().toISOString()}`);
const controller = new AbortController();
const timeoutId = setTimeout(() => controller.abort(), 5000);
fetch('https://radio.mcm.fm/', { signal: controller.signal })
.then((res) => {
if (res.status === 200) {
return res.json();
} else {
return Promise.reject('something wrong');
}
})
.then((res) => {
console.log('ok');
setTimeout(getCurrent, 3000);
this.props.importCurrentSong(res.current_track);
})
.catch((err) => {
console.log('fail');
setTimeout(getCurrent, 25000);
});
}
getCurrent();
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Изучаю тему по учебникуВ нем есть пример, который работает в сэндбоксе
Загорелся идеей добавить service worker при помощи workbox в существующий проект на WordPress, но столкнулся с одной проблемой: где его расположить и как...