Maison  >  Article  >  interface Web  >  Comment puis-je ajuster dynamiquement l'intervalle setInterval en JavaScript ?

Comment puis-je ajuster dynamiquement l'intervalle setInterval en JavaScript ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-27 10:35:39527parcourir

How Can I Dynamically Adjust the setInterval Interval in JavaScript?

Ajustement dynamique de l'intervalle SetInterval

Cette fonction JavaScript invoquait à l'origine SetInterval pour manipuler une chaîne à un intervalle fixe de 100 millisecondes :

var interval = setInterval(function() { ... }, 100);

Cependant, l'utilisateur souhaitait ajuster dynamiquement cet intervalle en fonction d'un compteur de boucles. Le changer en :

var interval = setInterval(function() { ... }, 10*counter);

s'est avéré inefficace.

Solution utilisant une fonction anonyme

Pour obtenir le comportement souhaité, une fonction anonyme peut être utilisée :

var counter = 10;
var myFunction = function(){
    clearInterval(interval);
    counter *= 10;
    interval = setInterval(myFunction, counter);
}
var interval = setInterval(myFunction, counter);

Cette fonction efface à plusieurs reprises l'intervalle actuel, multiplie le compteur par 10 et réinitialise l'intervalle avec la valeur mise à jour.

Solution mise à jour utilisant setTimeout

Comme suggéré par A. Wolff, setTimeout propose une approche alternative qui élimine le besoin de clearInterval :

var counter = 10;
var myFunction = function() {
    counter *= 10;
    setTimeout(myFunction, counter);
}
setTimeout(myFunction, counter);

Avec cette méthode, setTimeout planifie récursivement la fonction avec le nouvel intervalle.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn