我想在我的Javascript代码中添加一个小的掷骰子效果。我认为使用setInterval()
方法是一个好方法。我的想法是下面这段代码(仅用于测试):
function roleDice() {
var i = Math.floor((Math.random() * 25) + 5);
var j = i;
var test = setInterval(function() {
i--;
document.getElementById("dice").src = "./images/dice/dice" + Math.floor((Math.random() * 6) + 1) + ".png";
if (i < 1) {
clearInterval(test);
}
}, 50);
}
现在我想等待setInterval执行完成后再进行操作,所以我添加了一个setTimeout。
setTimeout(function(){alert("test")}, (j + 1) * 50);
这段代码运行得非常好。
但在我的主代码中,roleDice()
函数返回一个值。现在我不知道该如何处理它... 我不能从 setTimeout()
中返回。如果我在函数末尾添加一个 return,那么返回值将会过早地返回。有没有人有想法,知道我该如何解决这个问题?
编辑 嗯,好的,我理解回调函数的作用并且我认为我知道它是如何工作的,但我还是有问题。我认为这更像是一个“接口”问题... 这是我的代码:
function startAnimation(playername, callback) {
var i = Math.floor((Math.random() * 25) + 5);
var int = setInterval(function() {
i--;
var number = Math.floor((Math.random() * 6) + 1);
document.getElementById("dice").src = "./images/dice/dice" + number + ".png";
if(i < 1) {
clearInterval(int);
number = Math.floor((Math.random() * 6) + 1);
addText(playername + " rolled " + number);
document.getElementById("dice").src = "./images/dice/dice" + number + ".png";
callback(number);
}
}, 50);
}
function rnd(playername) {
var callback = function(value){
return value; // I knew thats pointless...
};
startAnimation(playername, callback);
}
函数rnd()
应该等待并返回值...我有点困惑。目前我不知道该怎么继续下去......代码等待var callback...
,但是我该如何将其与返回结合起来呢?我想运行动画,然后使用rnd()
将最后一个数返回给另一个函数。
rollDice
而不是roleDice
;) - ThiefMaster