簡體   English   中英

在 Javascript 中如何防止在 setTimeout 持續時間內調用其他函數?

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

我正在做一個井字游戲。

我包含了一個 setTimeout 函數,以便在計算機移動之前,它看起來像是在“思考”,然后計算機實際在板上留下標記。

但是,我注意到,當計算機在“思考”時,我可以采取行動,從而破壞了讓對手先行動的目的,然后才能做出自己的行動(如果有道理的話)

例子:

(輪到我了)我用圓圈標記一個方框
(計算機轉向)計算機“思考”...

  • 我在電腦思考的時候移動
  • 我的移動在計算機移動之前在板上留下了一個標記,這意味着在 setTimeout 持續時間內仍然會調用一個函數。

我如何防止這種情況? 這可能嗎?

setTimeout(compTurn, 1000)

在玩家輪流時的點擊偵聽器中,檢查是否允許玩家先玩。 compTurn被安排時切換一個布爾值,並在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;
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM