Je souhaite exécuter myCustomFunction dans la "Console de Google Chrome" avec 1 seconde de retard sur chaque boucle .
J'ai essayé setInterval mais sans succès car aucun retard d'exécution n'a été observé dans la console de Google Chrome.
const myCustomFunction = i => console.log('iteration test number', i);
for (let i = 0; i < 11; i++) {
setInterval(myCustomFunction(i), 1000);
};
myCustomFunction . 4 Réponses :
Vous pouvez faire comme suit, en utilisant setInterval comme fonction principale au lieu de loop.
const myCustomFunction = i => console.log('iteration test number', i);
let iteration = 0;
const delay = 1000;
const tillCount = 11;
setInterval(() => {
if (iteration < tillCount) {
iteration ++;
myCustomFunction(iteration);
}
}, delay);
Vous devez utiliser setInterval a > pour exécuter votre fonction (autant de fois que vous le définissez) et arrêtez-la avec clearInterval . Sinon, votre setInterval continuera à fonctionner indéfiniment.
const customFunction = i => console.log('Iteration:', i);
let counter = 0;
const maxIteration = 5;
const delay = 1000;
const intervalId = setInterval(() => {
if (counter < maxIteration) {
counter++;
customFunction(counter);
} else {
clearInterval(intervalId);
}
}, delay);
Consultez le code ci-dessous et lisez le commentaire pour comprendre
const myCustomFunction = i => console.log('iteration test number', i);
repeat = 10; // how many time to repeat;
var i =0; // value to increase.
function loop(){
myCustomFunction(i);
i++;
if (i<= repeat) // if the loop is suppose to continue
setTimeout(loop, 1000); // wait 1s and loop agen
}
loop();
J'ai modifié votre code pour donner le résultat attendu.
const myCustomFunction = i => console.log('iteration test number', i);
for (let i = 0; i < 11; i++) {
setTimeout(myCustomFunction, 1000 * i, i);
}
Parlons des changements,
setInterval par setTimeout : setInterval exécute une fonction donnée à un intervalle donné. Donc, si vous avez appelé setInterval (myCustomFunction, 1000) , il exécutera à plusieurs reprises myCustomFunction toutes les 1s. Ce n'est pas le comportement que vous voulez, vous voulez seulement un délai de 1 et pour cela setTimeout est plus approprié. setInterval / setTimeout est une fonction, mais la sortie de myCustomFunction (i) était indéfini . Donc, au lieu d'appeler myCustomFunction , passez-le simplement. 1000 à i * 1000 : car le contenu de la boucle for s'exécute sans aucun délai. Modifiez donc le délai pour exécuter myCustomFunction après i secondes . setTimeout i : setTimeout passe tous les paramètres après le 2ème (délai) à la fonction de rappel (dans notre cas myCustomFunction ). Pour une visite de référence
Double possible de Comment ajouter un délai dans un JavaScript boucle?