Как очистить интервал в постоянном объекте? - PullRequest
0 голосов
/ 28 января 2020

Я пытаюсь очистить интервал в функции slide.autoplay в следующем фрагменте JS.

Я sh использую другую функцию в моей константе, как slide.stop функция

slide = {
    init: () => {
        eraser.content()
        slide.autoplay()
    },
    next: () => {
        eraser.start()
        currentSlide < 1 ? currentSlide++ : currentSlide = 0
        eraser.content()
        eraser.end()
    },
    autoplay: () => setInterval(slide.next, 5000)
}

addEventListener( 'DOMContentLoaded', slide.init )
addEventListener( 'click', slide.stop )

Кстати, я использую функции в константах с нескольких дней, я нашел это правильным, я не знаю, хорошая ли это практика, что вы думаете об этом

Ответы [ 2 ]

0 голосов
/ 28 января 2020

Вы можете сохранить идентификатор setInterval возвращается.

const slide = {
    interval: null,
    play() {
        this.interval = setInterval(this.next, 1000);
    },
    next() {
        console.log("Next");
    },
    stop() {
        clearInterval(this.interval);
    }
};
0 голосов
/ 28 января 2020

Вам нужно сохранить интервал перед тем, как очистить его:

slide = {
  interval: null,
  init: () => {
    eraser.content()
    slide.autoplay()
  },
  next: () => {
    eraser.start()
    currentSlide < 1 ? currentSlide++ : currentSlide = 0
    eraser.content()
    eraser.end()
  },
  autoplay() {
    this.interval = setInterval(slide.next, 5000)
  },

  stop() {
    if (this.interval) {
      clearInterval(this.interval)
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...