Sto scrivendo un piccolo componente jQuery che si anima in risposta alle pressioni dei pulsanti e dovrebbe anche andare automaticamente. Mi stavo chiedendo se questa funzione sia ricorsiva o meno, non riesco a capirlo.Se una funzione jQuery si chiama nella sua chiamata di completamento, è un pericolo ricorsivo allo stack?
function animate_next_internal() {
$('#sc_thumbnails').animate(
{ top: '-=106' },
500,
function() {
animate_next_internal();
}
);
}
La mia funzione reale è più complicato da consentire per gli arresti e ripartenze, questo è solo un esempio semplificato.
EDIT Potrebbe sovraccaricare lo stack o meno, a seconda di come gli eventi vengono gestiti internamente. Possibilità:
animate() directy chiama la richiamata fatto, nel qual caso un overflow è inevitabile.
animate() pianifica la callback per chiamata da qualche meccanismo invio esterno e quindi termina, nel qual caso sarà mai troppopieno.
+1 Poiché l'impostazione di una funzione di callback non equivale a chiamare la funzione al suo interno. questa non è vera ricorsione. – Samuel
Ciao, grazie per aver trovato il tempo per provarlo. Penso che tu abbia centrato il punto. – NXT
Hai certamente ragione che funziona e il tuo test per dimostrare che va bene. Se vuoi anche sapere _why_ questo funziona, devi capire il concetto di ** Code **, implementato in jQuery con i metodi ['.queue()'] (http://api.jquery.com/queue /) e ['.dequeue()'] (http://api.jquery.com/dequeue/). Tutto questo è spiegato molto bene e con esempi in [questa risposta] (http://stackoverflow.com/a/3314877/1062304) a un'altra domanda. – bfncs