Comme je ne pouvais pas commenter, je suis obligé d'écrire ce post. J'ai obtenu le code ci-dessous qui retarde / attend exactement 1 seconde ou 1000 millisecondes -
let n = 5;
for (let i=1; i<n; i++)
{
setTimeout( function timer()
{
console.log("hello world");
}, i*1000 );
}
Mais comment puis-je le retarder de 1 * 1000 secondes au lieu de 1 000 millisecondes fixe, de sorte que l'attente dépend du nombre d'itérations?
Par exemple, si n = 5, alors je veux le délai de boucle 1 seconde dans la 1ère itération. 2 secondes en seconde itération, et ainsi de suite .. le retard final sera de 5 secondes.
javascript
wait
Mike
la source
la source
i
- si vous ne le faites pas, vous obtiendrez toutes ces alertes en même temps.Réponses:
Voici une fonction qui s'affichera immédiatement, puis 1 seconde plus tard, 2 secondes après que, 3 secondes après cela, etc. Aucun calcul spécial, aucune promesse nécessaire
la source
Bien que cette tâche puisse être résolue avec des promesses, des flux réactifs et d'autres outils sympas (hé, personne n'a encore suggéré d'utiliser des travailleurs!), Elle peut également être résolue avec un peu d'arithmétique.
Vous voulez donc des délais d'attente dans une séquence: 1s, le précédent + 2s, le précédent + 3s, et ainsi de suite. Cette séquence est: 1, 3, 6, 10, 15 ... et sa formule est
a[n] = n * (n + 1) / 2
. Sachant que...la source
Vous pouvez essayer d'utiliser async / wait (Promises), pour sérialiser votre code:
la source
Cela m'a pris du temps pour déchiffrer votre question xD, mais est-ce ce que vous voulez?
Cela continuera à tirer console.log avec un retard i * 1000 à chaque fois. donc la première fois ce sera 1 seconde (1 * 1000), ensuite ce sera 2 secondes et ainsi de suite.
la source
La boucle n'attend pas la fin de la fonction de temporisation. Ainsi, lorsque la boucle s'exécute, elle planifie votre alerte pour chaque index.
Vous pouvez utiliser une fonction qui s'exécutera en fonction de votre index mais planifiée en même temps. Vous pouvez sentir la différence de 3 secondes.
la source
Utiliser des appels récursifs au lieu de la boucle for
la source