我正在进行两场比赛,我需要在每次移动后交换球员。
目前我有这个javascript:
var play = function(player, opp) {
var index;
player.play(function(move) {
index = move;
board.board[index][1] = player.mark;
if (board.weHaveWinner()==undefined||!board.isFull()) {
play(opp,player);
}
});
}
在对手计算移动之前,移动的玩家不会被拉出的问题。
如何使这种异步?
答案 0 :(得分:1)
运行递归函数时浏览器会挂起。 javascript函数setTimeout(...)
会将控制权简单地传回浏览器以呈现您的电路板,然后一段时间后它将以递归方式调用play(...)
:
https://developer.mozilla.org/en-US/docs/DOM/window.setTimeout
这样的事情:
window.setInterval(play(opp,player),100);
因此,浏览器使用标记呈现电路板,然后在100毫秒后继续调用方法播放的下一层。