setTimeout la récursivité avec Jquery
Je suis en train d'incrémenter une valeur à chaque seconde sur le côté client avec jquery
c'est ce qu'a fait:
<script type="text/javascript">
$(document).ready(function increment(){
$("#counter").text(parseInt($("#counter").text())+1);
setTimeout(increment(),1000)
})
</script>
cela ne fonctionne pas comme prévu et j'ai "trop de la récursivité d'erreur".
toutes les idées sur ce point?
Vous devez vous connecter pour publier un commentaire.
Essayer
Par le façon, il ya
setInterval()
à l'appel d'une fonction à plusieurs reprises à un intervalle défini, rathering que de manière récursive l'appel d'une fonction avecsetTimeout()
increment()
est un appel pour incrémenter, pas une référence. Lorsque vous essayez de le configurer pour l'incrément d'être appelé de nouveau, vous êtes réellement en l'appelant de nouveau immédiatement. Si il est jamais revenu, son valeur de retour serait passé àsetTimeout
, mais il ne le sera jamais, car il appelle simplement lui-même, encore et encore, jusqu'à obtenir une profondeur de récursivité erreur.La solution consiste simplement à supprimer les parenthèses, de sorte que vous êtes référencement la fonction d'incrémentation et de ne pas l'appeler.
setTimeout(increment, 1000)
devrait être la bonne syntaxe, puisque vous êtes de passage à une référence à une fonction.De manière récursive appel
setTimeout()
sans critère d'arrêt n'est pas recommandé. La pile se dirigeront par la suite. À l'aide desetInterval()
devrait être en sécurité.Un moyen plus simple: "Une fonction qui est appelée dès que créé et se répète à l'intérieur de 1000 ms d'intervalle si "quelque chose" n'est pas vrai"