如何设置间隔,清除间隔,并使用相同的确切ID重置间隔

时间:2020-02-29 02:36:54

标签: javascript jquery html css web

所以基本上我想要这样的东西

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

出于某种原因,类似的内容对我不起作用,我将其全部发布,但我没有评论,也没有组织感。这应该有用吗,还是我想念他们的东西?

编辑:好的,所以我将尝试更好地解释这一点。所以基本上,我有一个间隔设置,和一个清除所说间隔的函数。我需要在每次输入后重置它们,所以clearInterval必须识别一个与开始时具有相同ID的间隔,因此我需要基本上重新使用该ID,但是由于某些原因它不起作用。希望对疯狂的疯狂有半点了解

2 个答案:

答案 0 :(得分:2)

您可以创建一个开始/停止间隔的类。

Repl Example

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)

答案 1 :(得分:0)

不能。间隔id“是一个非零的数字值,它标识通过调用setInterval()创建的计时器”,并且会自动生成。

我建议您更改代码的逻辑,但是,如果您坚持要这样做,可以将所有id添加到数组中,并将其作为参数传递给删除间隔的函数。然后您将在中断间隔时拼接ID。