Marco Disco
Marco Disco

Reputation: 565

Moment JS subtract problems

I'm setting up a timer with moment, is not the only one I have in this screen but this doesn't work:

const halfBellTimer = () => {
    const x = setInterval(() => {
      let countTime = moment.duration().add({seconds: meditationTime / 2});

      if (countTime <= 0) {
        console.log('STOP');
      } else {
        countTime = countTime.subtract(1, 's');
        console.log(countTime.seconds());
      }
    }, 1000);
  };

It sets the time correctly but I get a log of the same value, so it doesn't subtract it. Any idea? Thanks!

Upvotes: 1

Views: 198

Answers (1)

J&#243;zef Podlecki
J&#243;zef Podlecki

Reputation: 11283

If you move let countTime = moment.duration().add({seconds: meditationTime / 2}); outside of setInterval function it works fine.

Don't forget to clean up with clearInterval.

Take a look at the example.

const halfBellTimer = () => {
  const meditationTime = 10;
  let countTime = moment.duration().add({
    seconds: meditationTime / 2
  });

  const x = setInterval(() => {

    if (countTime <= 0) {
      console.log('STOP');
      clearInterval(x);
    } else {
      countTime = countTime.subtract(1, 's');
      console.log(countTime.seconds());
    }
  }, 1000);
};

halfBellTimer();
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.19.1/moment.min.js"></script>

Upvotes: 1

Related Questions