Как установить интервал, очистить его, сбросить интервал с таким же точным идентификатором - PullRequest
0 голосов
/ 29 февраля 2020

Так что в принципе я хотел бы что-то вроде этого

Inter = setInterval(Function, 1000);
clearInerval(Inter);
Inter = setInterval(Function, 1000);

По какой-то причине что-то подобное не будет работать для меня, я бы опубликовал все это, но у меня нет комментариев и нет чувства организации. Это должно сработать, или мне их чего-то не хватает?

Правка: Хорошо, так что я попытаюсь объяснить это лучше. В общем, у меня есть установленный интервал и функция для очистки указанного интервала. Мне нужно, чтобы они сбрасывались после каждого ввода, поэтому clearInterval должен распознавать интервал с тем же идентификатором, с которого он начинался, поэтому мне нужно в основном повторно использовать идентификатор, но по какой-то причине он не работает. Надеюсь, это безумие имело смысл

Ответы [ 2 ]

2 голосов
/ 29 февраля 2020

Вы можете создать класс, который запускает / останавливает интервал.

Пример Repl

class Interval {
  constructor(duration, callback) {
    this.duration = duration
    this.callback = callback
  }
  get interval() { return this._interval }
  set interval(interval) { this._interval = interval }
  get duration() { return this._duration }
  set duration(duration) { this._duration = duration }
  get callback() { return this._callback }
  set callback(callback) { this._callback = callback }
  start() {
    this.interval = setInterval(this.callback, this.duration)
    return this
  }
  stop() {
    clearInterval(this.interval)
    return this
  }
}

Реализация

let interval = new Interval(
  1000, 
  () => {
    console.log('interval')
  }
)
interval.start()
setTimeout(() => {
  interval.stop()
}, 5000)
0 голосов
/ 29 февраля 2020

Вы не можете. Идентификатор интервала "это цифра c, ненулевое значение, которое идентифицирует таймер, созданный вызовом setInterval ()" и генерируется автоматически.

Я бы порекомендовал изменить логи c вашего код, но, если вы настаиваете, вы можете добавить все идентификаторы в массиве, который вы будете передавать в качестве параметра функции, которая стирает интервалы. Тогда вы будете склеивать идентификаторы, убивая интервалы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...