Подождите, пока setInterval () не будет сделано
Я хотел бы добавить небольшой эффект броска кубиков в мой код 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()
, Если я добавлю возврат в конец функции, он будет быстро повышен. У кого-нибудь есть идея, как я могу это исправить?
Edit Хм, хорошо, я понимаю, что такое доза обратного вызова, и я думаю, что знаю, как это работает, но у меня все еще есть проблема. Я думаю, что это более "интерфейсный" интерфейс. проблема ... Вот мой код:
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()
следует подождать и вернуть значение & # x2026; Я немного растерялся. На данный момент я понятия не имею, как это происходит ... Код ждатьvar callback...
но как я мог совместить это с обратным? Я хотел бы запустить анимацию и вернуть после этого последний номер сrnd()
к другой функции.