2
votes

Comment faire une boucle de retard d'une seconde "dans la console de Google Chrome"

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);
};
  1. Je m'attends à ce que la console de Google Chrome retarde 1 seconde (ou plus) pour chaque itération avant d'exécuter myCustomFunction .
  2. J'ai besoin de cela pour fonctionner dans la console de Google Chrome , pas dans le module "fileName.js"


4 Réponses :


0
votes

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


0 commentaires

0
votes

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


0 commentaires

0
votes

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


0 commentaires

1
votes

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,

  1. Remplacement de 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é.
  2. premier argument de setInterval / setTimeout est une fonction, mais la sortie de myCustomFunction (i) était indéfini . Donc, au lieu d'appeler myCustomFunction , passez-le simplement.
  3. Changement du délai de 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 .
  4. 3ème paramètre de 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

  1. https://developer.mozilla.org/ro/docs /Web/API/window.setTimeout
  2. https://developer.mozilla.org/en -US / docs / Web / API / WindowOrWorkerGlobalScope / setInterval


0 commentaires