变量在setInterval完成之前变为true

时间:2018-04-27 22:32:27

标签: javascript html css ecmascript-6

showMoves是一个用于显示西蒙游戏闪烁的功能。

当闪光灯结束时,我清除了停止它的间隔,然后我将game.playerTurn设置为true,这样我就可以点击颜色,但game.playerTurn正在变为{{1只要true被激活。

我希望showMoves保持game.playerTurn,直到false功能完成显示闪烁。

以下是我在{ - 1}}中使用的函数 -

showMoves

我很感激任何帮助。这是游戏的链接和所有代码https://codepen.io/icewizard/pen/JLBpNQ

1 个答案:

答案 0 :(得分:0)

你在哪里设置game.playerTurn回到假?

function showMoves() {
  game.playerTurn = false;
  let i = 0;

  const start = setInterval(function() {
  if (i >= game.computerMoves.length) {
      clearInterval(start);
      game.playerTurn = true;
      return;
  }

  const move = game.computerMoves[i];
  setLight(move, true);
  setTimeout(setLight.bind(null, move, false), 1000); //Using bind to preset arguments

  i++;
}, 2000);
}

似乎在您提供的codepen示例中为我工作