【问题标题】:In Javascript How do I prevent other functions from being invoked while under the setTimeout duration?在 Javascript 中,如何防止在 setTimeout 持续时间内调用其他函数?
【发布时间】:2020-10-06 11:58:14
【问题描述】:

我正在玩井字游戏。

我包含了一个 setTimeout 函数,以便在计算机开始移动之前,它看起来像是在“思考”,然后计算机实际在棋盘上留下标记。

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

例子:

(轮到我了)我用圆圈标记了一个框
(电脑转)电脑“思考”……

  • 我在电脑思考的时候采取了行动
  • 在计算机移动之前,我的移动在棋盘上留下了一个标记,这意味着在 setTimeout 持续时间内仍会调用函数。

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

setTimeout(compTurn, 1000)

【问题讨论】:

    标签: javascript settimeout


    【解决方案1】:

    在玩家转弯时的点击监听器中,检查是否允许玩家先玩。当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;
    });
    

    【讨论】:

    • 谢谢!不敢相信我没有想到这一点。
    猜你喜欢
    • 2016-08-20
    • 1970-01-01
    • 1970-01-01
    • 2023-01-20
    • 1970-01-01
    • 1970-01-01
    • 2014-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多