Ciao,
ho necessità di inserire un ritardo nell'esecuzione di un ciclo while. Ma lui se ne frega:
function f1()
{
..................
while(step1 > 0){
rTemp1 = rTemp1 + rDelta1;
step1 -= 1;
setTimeout(function(){},100);
}
}
Consigli???
Ciao,
ho necessità di inserire un ritardo nell'esecuzione di un ciclo while. Ma lui se ne frega:
function f1()
{
..................
while(step1 > 0){
rTemp1 = rTemp1 + rDelta1;
step1 -= 1;
setTimeout(function(){},100);
}
}
Consigli???
Ciao benvenuta/o, prova cosi:
codice:function f1() { .................. while(step1 > 0){ rTemp1 = rTemp1 + rDelta1; step1 -= 1; } setTimeout(function(){f1()},100); }![]()
P.S. Quando posti del codice usa il tasto [code]
Cavicchi Andrea
Problemi con javascript, jquery, ajax clicca qui
Così verrebbe rieseguito anche tutto il codice prima del while.
Inoltre visto che le variabili sono locali non sono sicuro che nella successiva chiamata lo scope le renda leggibili. Temo di no.
perche non ci spieghi cosa vuoi ottenere? quello che vuoi fare non mi pare abbia molto senso...
a questo punto casserei in toto il while
Esempio su jsBin (apri la console e clicca su "run with JS") http://jsbin.com/osatup/2/editcodice:function f() { /* setup code */ var step1 = 100; (function f_inner() { rTemp1 += rDelta1; if (--step1) { setTimeout(f_inner, 100); } }()); }
Vuoi aiutare la riforestazione responsabile?
Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)
Mi serve per tutti gli effetti di dissolvenza e sfumatura del colore. Senza un ritrardo l'effetto non è percepibile ma è istantaneo.perche non ci spieghi cosa vuoi ottenere? quello che vuoi fare non mi pare abbia molto senso..
Ah pensavo non si potessero annidare le funzioni in javascript. Così risolvo il problema.Originariamente inviato da fcaldera
a questo punto casserei in toto il while
Esempio su jsBin (apri la console e clicca su "run with JS") http://jsbin.com/osatup/2/editcodice:function f() { /* setup code */ var step1 = 100; (function f_inner() { rTemp1 += rDelta1; if (--step1) { setTimeout(f_inner, 100); } }()); }
Grazie mille.
Solo mi spieghi perchè si mettono le doppie parentesi tonde () pure alla fine della funzione f_inner oltre che dopo il nome della funzione???
di norma una funzione viene definita conOriginariamente inviato da WebDeveloper3
Solo mi spieghi perchè si mettono le doppie parentesi tonde () pure alla fine della funzione f_inner oltre che dopo il nome della funzione???
ed eseguita concodice:function f() { ... }
con la notazionecodice:f()
definisci ed eseguila funzione f allo stesso tempo (se ci pensi, come fa il codice ad eseguire la funzione inner la prima volta?)codice:(function f() { ... }())
inoltre l'identificatore f resta visibile all'interno dello scope stesso quindi puoi chiamare la funzione all'interno del suo scope
Vuoi aiutare la riforestazione responsabile?
Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)
Perfetto, grazie mille.