在 Javascript 如何防止在 setTimeout 持续时间内调用其他函数?

In Javascript How do I prevent other functions from being invoked while under the setTimeout duration?

我在玩井字游戏。

我加入了一个 setTimeout 函数,这样在计算机开始移动之前,它看起来像是在“思考”,然后计算机才真正在棋盘上留下标记。

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

示例:

(轮到我了)我用圆圈标记了一个方框
(电脑转)电脑'thinks'...

如何防止这种情况发生?这可能吗?

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;
});