Newsgroup: it.comp.lang.javascript
Titolo: ricorsione con pausa

Ciao a tutti.
Ho un problema nel mettere una pausa dentro una ricorsione:
La funzione di ricorsione senza pausa è questa:
function Solver(n, VectL, VectC, VectR){
	if(n==1){
		MoveSol(VectL, VectR);
		controlVictory();
	}else{
		Solver((n-1), VectL, VectR, VectC);
		MoveSol(VectL, VectR);
		Solver((n-1), VectC, VectL, VectR);
	}
}
Funziona benissimo. Adesso io vorrei che la funzione MoveSol() la
esegua dopo alcuni instanti. Quindi se non sbaglio la funzione
diverebbe:
function Solver(n, VectL, VectC, VectR){
	if(n==1){
		setTimeout("MoveSol(VectL, VectR)",500);
		controlVictory();
	}else{
		Solver((n-1), VectL, VectR, VectC);
		setTimeout("MoveSol(VectL, VectR)",500);
		Solver((n-1), VectC, VectL, VectR);
	}
}
Uso firefox e nella console degli errori mi scrive che Vectl non è
definito, quindi è come se non ci fosse un passaggio di variabili.
Ho provato a non mettere i doppi apici e non funziona cmq, ho anche
provato a mettere una cosa del tipo:  setTimeout("MoveSol("+VectL+","+
VectR+")",500); e anche setTimeout("+MoveSol(VectL, VectR)+",
500); ....
Ma andare a tentativi non risolvo nulla e quindi chiedo a voi cosa sto
sbagliando.
Saluti,
Marco.

 definito, quindi è come se non ci fosse un passaggio di variabili.
Come specificato nelle reference (es.
http://developer.mozilla.org/en/docs/DOM:window.setTimeout#1021427
 ), il
codice specificato come parametro della funzione setTimeout viene eseguito
in un contesto di esecuzione separato, nel quale quindi non possono essere
viste le variabili locali della funzione dalla quale invochi setTimeout
(come, nel tuo caso, VectL e VectR). Per passare dei parametri si può usare
la sintassi:
setTimeout(funcRef,delay[,par1,par2,...])
ovvero
setTimeout(MoveSol,500,VectL,VectR)
ma mi sa che *non* funziona in IE e non saprei dirti in quali browsers va.
-- 
Nando [?]
Apostolo della Prova

 non la sapevo... bellissima :-)
http://groups.google.it/group/it.comp.lang.javascript/browse_thread/thread/d042f2a2b4de9ba5/72fa4a5fb61e4f49?lnk=st&q=setTimeout+group%3Ait.comp.lang.javascript+author%3Azer0&rnum=3&hl=it#72fa4a5fb61e4f49
-- 
"Ho smesso di fumare.
 Vivrò una settimana di più.
 E in quella settimana pioverà a dirotto"
									    W.A.

 mi interessava sprattutto per XUL, il pappié mi sa che non serve ;-)
per firefox funziona nativamente (ma và...!)
-- 
"Ti sei salvato
 o sei entrato in banca pure tu?"
									    A.V.

 non la sapevo... bellissima :-)
Le reference, queste sconosciute. :P
-- 
~ "Non si chiama coraggio se non hai paura."
("Bounce")

 quando una cosa pensi di saperla non ci pensi a vederne la reference.
Ovviamente, io sono andata a guardarla solo per rispondere al post :D


 quando una cosa pensi di saperla non ci pensi a vederne la reference.
Ma uno le cose dovrebbe saperle perché le ha studiate sulle reference,
no? :)
-- 
~ Se i sintomi persistono, insultare il medico.

 Ovviamente, io sono andata a guardarla solo per rispondere al post :D
Oh beh, se ne era già parlato altre volte nel NG, comunque. Bastava
avere buona memoria! :)


jurgz ha scritto:

credo il problema sia di sintassi, prova con:
setTimeout("MoveSol('"+VectL+"','"+ VectR+"')",500);
notarte gli apici ' prima del nome della variabile, invece
che ..."+VectL+"... diventa ...'"+VectL+"'....
a me così funzia su tutti i browser

 a me così funzia su tutti i browser
Permettimi di avere qualche dubbio :)
-- 
Nando, A-postumo della Prova
*Uso i pesci di Babele*