Si un des appels de fonction jQuery lui-même dans son rappel de fin, c'est que récursive de danger pour la pile?
Je suis en train d'écrire un petit composant jQuery qui l'anime, en réponse à l'appuie sur un bouton et aussi devrait aller automatiquement. Je me demandais juste si cette fonction récursive ou pas, je n'arrive pas à s'en sortir.
function animate_next_internal() {
$('#sc_thumbnails').animate(
{ top: '-=106' },
500,
function() {
animate_next_internal();
}
);
}
Ma fonction réelle est plus compliquée à permettre d'arrêts et de départs, c'est juste un exemple simplifié.
MODIFIER qu'Il pourrait débordement de la pile ou pas, en fonction de la façon dont les événements sont gérés à l'interne. Possibilités:
- animate() directy appelle le fait de rappel, dans ce cas, un dépassement est inévitable.
- animate() des listes de rappel pour les appels externes mécanisme de distribution et puis s'arrête, dans ce cas, il ne sera jamais de débordement.
OriginalL'auteur NXT | 2010-04-24
Vous devez vous connecter pour publier un commentaire.
J'ai d'abord soupçonné qu'il serait de débordement de la mémoire, mais j'ai écrit un court test pour confirmer
et étonnamment, j'ai vu
dans mes journaux. Ressemble "animate() des listes de rappel pour les appels externes mécanisme de distribution et puis s'arrête, dans ce cas, il ne sera jamais dépassement". c'est la bonne réponse
Salut, merci de prendre le temps d'essayer ça. Je pense que vous avez cloué.
Vous avez certainement raison que ça marche et test pour prouver qu'elle est bien. Si vous voulez également savoir pourquoi cela fonctionne, vous devez comprendre le concept de Files, mis en œuvre en jQuery par les méthodes
.queue()
et.dequeue()
. Tout cela est très bien expliqué et avec des exemples en cette réponse une autre question.OriginalL'auteur sjobe
Je m'attends à ce que la mise en œuvre de débordement de la pile d'appel. À moins que vous simplifié, vous devez avoir une sorte de terminal de condition qui provoque la fonction de la récursivité. Vous avez probablement besoin de quelque chose comme ceci:
Où some_condition que quelque chose est liée à la récursivité, peut-être lors de la #sc_thumbnails véritable sommet atteint une certaine limite de 0 sur la page ou dans son parent.
OriginalL'auteur BJ Safdie