在Javascript中,如何防止在setTimeout duration下调用其他函数?

在Javascript中,如何防止在setTimeout duration下调用其他函数?,javascript,settimeout,Javascript,Settimeout,我在做一个井字游戏 我包括了一个setTimeout函数,这样在计算机移动之前,它看起来就像是在计算机在电路板上留下标记之前“思考” 然而,我注意到,当计算机在“思考”时,我可以采取行动,从而打破了让对手先采取行动,然后我才能采取另一个行动的目的(如果这有意义的话) 例如: (轮到我)我用圆圈标记一个方框 (计算机转向)计算机“思考” 我在电脑思考时采取了行动 在计算机移动之前,我的移动会在电路板上留下一个标记,这意味着在setTimeout持续时间内仍会调用函数 我如何防止这种情况?这可能

我在做一个井字游戏

我包括了一个setTimeout函数,这样在计算机移动之前,它看起来就像是在计算机在电路板上留下标记之前“思考”

然而,我注意到,当计算机在“思考”时,我可以采取行动,从而打破了让对手先采取行动,然后我才能采取另一个行动的目的(如果这有意义的话)

例如:

(轮到我)我用圆圈标记一个方框
(计算机转向)计算机“思考”

  • 我在电脑思考时采取了行动
  • 在计算机移动之前,我的移动会在电路板上留下一个标记,这意味着在setTimeout持续时间内仍会调用函数
我如何防止这种情况?这可能吗

setTimeout(compTurn, 1000)

在玩家转弯时的单击侦听器中,检查玩家是否被允许先玩。在计划
compTurn
时切换布尔值,并在
compTurn
完成时将其关闭:

// Start of game:
let playerTurn = true;

// ...

// Make computer take a turn:

playerTurn = false;
setTimeout(compTurn, 1000);
const compTurn = () => {
  // ...
  playerTurn = true;
};

谢谢真不敢相信我居然没想到。
board.addEventListener('click', (e) => {
  if (!playerTurn) return;
});