Espere até que setInterval () seja feito

Eu gostaria de adicionar um pequeno efeito de rolagem de dados ao meu código Javascript. Eu acho que uma boa maneira é usar osetInterval() método. Minha ideia era seguir o código (apenas para teste):

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);     
    }

Agora eu gostaria de esperar pelo setInterval até que seja feito. Então eu adicionei um setTimeout.

setTimeout(function(){alert("test")}, (j + 1) * 50);

Este código funciona bem. Mas no meu código principal oroleDice() função retorna um valor. Agora eu não sei como eu poderia lidar com isso ... eu não posso voltar dosetTimeout(). Se eu adicionar um retorno ao final da função, o retorno será aumentado para rápido. Alguém tem uma ideia, como eu poderia consertar isso?

Editar Hmm, ok eu entendo qual a dose de retorno e acho que sei como funciona mas ainda tenho o problema. Acho que é mais um problema de "interface" ... Aqui meu código:

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);
}

A funçãornd() deve esperar e devolver o valor… estou um pouco confuso. No momento eu não tenho idéia de como continuar ... O código espera pelovar callback... mas como eu poderia combiná-lo com o retorno? Eu gostaria de executar a animação e retornar depois que o último número comrnd() para outra função.

questionAnswers(4)

yourAnswerToTheQuestion