在Javascript中,如何防止在setTimeout duration下调用其他函数?
我在做一个井字游戏 我包括了一个setTimeout函数,这样在计算机移动之前,它看起来就像是在计算机在电路板上留下标记之前“思考” 然而,我注意到,当计算机在“思考”时,我可以采取行动,从而打破了让对手先采取行动,然后我才能采取另一个行动的目的(如果这有意义的话) 例如: (轮到我)我用圆圈标记一个方框在Javascript中,如何防止在setTimeout duration下调用其他函数?,javascript,settimeout,Javascript,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;
});