Я пытаюсь создать функцию, которая вычисляет время воспроизведения песни из Spotify, но я застрял на функции clearInterval. Проблема в том, что таймер продолжает ускоряться после того, как я пытаюсь его сбросить. Я использую Reactjs
Первый запуск intervalToTick составляет 1,6 секунды, но если я снова запущу функцию, она удвоится и будет ускоряться при каждом сбросе (работает в первый раз)
Поскольку я использую mobX, мое решение заключалось в том, чтобы добавить myTimer
как @observable в магазин, а затем перейти к ответу ниже.
const ticker = function() {
if (store.timer < 100) {
store.addToTimer() //mobX store action to add 1+ to the store.timer
}
};
function progress() {
store.timer = 0
let time = Moment()
let songEnd = Moment().add(1, "minutes")
const durationToFinnish = Moment.duration(songEnd.diff(time));
const intervalToTick = 100000 / durationToFinnish.asMilliseconds()
//Dumb to have it 2 times but cant figure of another way
var myTimer = window.setInterval(ticker, intervalToTick * 1000);
clearInterval(myTimer);
myTimer = window.setInterval(ticker, intervalToTick * 1000);
}
<div className={classes.progressBar} id="progress">
<div className={classes.innerProgressBar}>
<span onClick={progress}>{store.timer}%</span><br></br>
</div>
</div>