J'essaie d'exécuter un processus setInterval dans une boucle while qui génère un nombre de dés aléatoire et définit le graphique de dés pour le refléter. J'ai l'intention d'utiliser setInterval pour ajouter un délai entre chaque itération de boucle while afin que l'interface utilisateur représente les dés "rolling", plutôt que de simplement retourner la valeur finale. En l'état actuel, setInterval ne s'arrête pas quelle que soit la condition placée dans l'instruction if. Idéalement, ce serait «num» lui-même, de sorte que le nombre de jets de dés puisse être défini ailleurs.Exécuter setInterval correctement dans une boucle while
//roll dice num times
function rollDice(num) {
var counter = 0;
var i = 0;
while (i < num){
var diceDOM2 = document.querySelector(".dice");
var diceIntervalID = setInterval(function(){
//1. Rnd number
dice2 = Math.floor(Math.random()* 6) + 1;
// 2. Update diceDOM with new dice value
diceDOM2.style.display = "block";
diceDOM2.src = "dice-" + dice2 + ".png";
console.log(diceDOM2.src);
//determine setInterval exit
counter++;
console.log(counter);
if(counter > num){
clearInterval(diceIntervalID);
}
}, 1500);
i++;
};
};
Un grand merci tout
'setInterval' et les boucles de toute sorte sont généralement une très mauvaise idée. Qu'est-ce que vous essayez exactement d'accomplir? – rossipedia
Donc, vous voulez que les dés continuent à rouler n fois, avec un intervalle de 1.5s entre chaque rouleau? –
@rossipedia, c'est comme l'a supposé Manuel Otto ci-dessous. J'ai oublié de réduire le délai d'intervalle de 1500ms pour ce post - je ne l'ai mis que si haut pour que je puisse regarder la console plus clairement. – RickHallett