Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Pause con setTimeout che non funzionano

    Premetto che non ho mai utilizzato javascript, ho esperienza di php e python ma non avendo mai sviluppato il front-end delle applicazioni non mai usato javascript. Adesso mi ci sto cimentando un po' usando anche jquery.

    La mia intenzione era quella di creare uno script che richiamasse una funzione che venisse eseguita N volte con una pausa di esecuzione tra un'iterazione e l'altra di Y secondi.

    Dopo qualche ricerca sono arrivato a questo script:
    http://jsfiddle.net/27Ast/
    il quale però non funziona come vorrei.

    visualizza subito il valore finale della variabile, invece io vorrei che visualizzasse.. 1.. 2 .. 3.. 4.. etc fino a 10 con una pausa di un secondo tra un cambio di numero e l'altro.

    Cosa ho sbagliato ?

  2. #2
    Lo script che hai postato non funziona proprio, non è che non fa quello che vuoi. Dai un'occhiata qui: http://jsfiddle.net/bionicoz/7P6Jy/

  3. #3
    Quote Originariamente inviata da bionicoz Visualizza il messaggio
    Lo script che hai postato non funziona proprio, non è che non fa quello che vuoi. Dai un'occhiata qui: http://jsfiddle.net/bionicoz/7P6Jy/
    Il tuo script fa' esattamente quello che volevo fare.

    Però ho due domande sullo step successivo: nel caso la funzione richiamata da SetInterval impiegasse ad esempio un paio di minuti per essere eseguita, nel frattempo non verrebbe richiamata altre volte ? oppure una volta finito di eseguire la funzione richiamata ci sarebbe il tempo di attesa di 1 secondo ?

    Perchè il mio scopo ultimo era quello di mettere una pausa definita ( es 10 sec) tra un'iterazione e l'altra della funzione richiamata, qualunque sia la durata del tempo di esecuzione della funzione. Esempio: Viene richiamata la funzione X -> termina la funzione X dopo 1 minuto ->Pausa di 10 sec -> Viene richiamata la funzione X.. etc.. questo per un ciclo predeterminato di volte.

    P.S. Ho modificato il mio script e adesso funziona, purtroppo credo di aver mandato il link della versione senza aver cliccato su update! Scusatemi.
    http://jsfiddle.net/27Ast/1/
    Ultima modifica di W Thunderbird; 21-03-2014 a 18:32

  4. #4
    Letteratura qui: http://javascript.info/tutorial/sett...of-setinterval
    In pratica se la la funzione impiega più tempo dell'intervallo la prossima esecuzione viene messa in coda, ma senza aspettare l'intervallo.
    Per far quel che vuoi tu è più conveniente usare setTimout in una funzione ricorsiva, una cosa così per intenderci: http://jsfiddle.net/bionicoz/Hfm7g/

  5. #5
    Si, quest'ultima soluzione è proprio quella più adatta. Ed è anche quella che sto trovando indicata come la migliore per intervallare delle richieste ajax e delle elaborazioni.

    In realtà mi mancava proprio la parte concettuale di come funziona javascript.
    setTimeout in pratica, quando richiamato, è come se si mettesse in agenda. tra tot tempo devo fare questo.. nel frattempo javascript và avanti.. e dopo che è trascorso il tempo.. richiama la funzione. Idealmente è come fissare un appuntamento.. nel frattempo fà altro.. solo che quando arriva il tempo pianta lì quello che sta facendo ( nel limite del possibile.. cioè termina la funzione che sta eseguendo) e va all'appuntamento. Un comportamento particolare che non ho mai trovato.

    Ho fatto veramente fatica però a trovare la documentazione in merito, possibile che per un linguaggio così diffuso non ci sia un sito "ufficiale" dove spiegano i meccanismi di funzionamento ?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.