这又是我的剪刀石头布游戏。
目前,用户无法看到发生了什么,因为在提示输入(石头、布或剪刀)后,他们会立即重新提示。
问题是我怎样才能使程序延迟,以便他们至少可以读取正在发生的事情。
我读到 JavaScript 中不存在 sleep() 。我正在尝试使用 setTimeOut 但是,setTimeOut 导致程序无法运行。
关于如何在第一个用户输入后延迟下一个用户输入的任何想法。这可以通过任何 JS 解决方案来完成。
这是我现在的代码
function playUntil(rounds) {
var playerWins = 0;
var computerWins = 0;
setTimeout(function() {
while ((playerWins < rounds) && (computerWins < rounds)) {
var computerMove = getComputerMove();
var winner = getWinner(playerMove, computerMove);
console.log('The player has chosen ' + playerMove + '. The computer has chosen ' + computerMove);
if (winner === "Player") {
playerWins += 1;
}
else if (winner === "Computer") {
computerWins += 1;
}
if ((playerWins == rounds) || (computerWins == rounds)) {
console.log("The game is over! The " + winner + " has taken out the game!");
console.log("The final score was Player - [" + playerWins + "] to Computer - [" + computerWins + "]");
}
else {
console.log(winner + ' takes the round. It is now ' + playerWins + ' to ' + computerWins);
}
}
return [playerWins, computerWins]
;},5000);
}
您无法在 setTimeout、setInterval 或其他子函数上返回父函数的值,因为它们具有不同的作用域。
您可以使用承诺来代替:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise
Bad:
function x () {
setTimeout(function () {
return "anything";
}, 5000);
}
使用承诺:
function x () {
return new Promise(function (resolve, reject) {
setTimeout(function () {
resolve("anything");
}, 5000);
});
}
然后你可以调用如下函数:
x()
.then(
function (result) {
alert(result); // Do anything.
}
);
PD:我的英语不好,对不起!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)