如何调用保存在变量中的 setInterval 函数

How to call a setInterval function saved in a variable

我有一个 setInterval() 函数保存到一个变量,以便能够在使用 clearInterval() 后清除它。

  walkRight = setInterval(moveSnakeRight,1000) 
  walkLeft = setInterval(moveSnakeLeft, 1000)
  walkUp = setInterval(moveSnakeUp, 1000)
  walkDown = setInterval(moveSnakeDown, 1000) 

//and

      clearInterval(walkLeft)
      clearInterval(walkRight)
      clearInterval(walkUp)

我的问题是是否有任何方法可以再次调用相同的 SetInterval,在本例中为 walkRight 或 walkLeft 或 walkUp。他们中的任何一个..

如果我尝试 walkRight() 它不会工作,因为它不是一个函数,如果我尝试 window.walkRight 也不会工作。

setInterval 的 return 值是一个 数字 ,它标识间隔 用于清除它。

无法使用该数字获取有关间隔的任何其他信息。您不能使用它来确定哪个函数用于 运行 间隔。您不能使用它再次调用该函数。

如果您需要该信息,则必须单独存储。

例如:

const moveSnakeRight = () => {
  console.log('moving right');
};

class IntervalController {
  constructor(func) {
    this.func = func;
    this.start();
  }

  start() {
    if (typeof this.interval === "undefined") {
      this.interval = setInterval(this.func, 1000);
    }
  }

  stop() {
    clearInterval(this.interval);
    this.interval = undefined;
  }
}

const moveRightController = new IntervalController(moveSnakeRight);

document.querySelector('#start').addEventListener('click', () => moveRightController.start());

document.querySelector('#stop').addEventListener('click', () => moveRightController.stop());
<button id=start>Start</button>
<button id=stop>Stop</button>