Подождите, пока 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() к другой функции.

Ответы на вопрос(4)

Ваш ответ на вопрос