|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
[javascript]Metodo bloccante
C'è un modo per creare in javascript un metodo bloccante?
Vi espongo il mio problema: Codice:
var result; var fnc; function call(){ setTimeout("main()",randomNumber(2000)); } function main(){ if(fnc!=null){ result=ottieniValore(); fnc(); } fnc=null; } function start(){ fnc=function(){ alert(result); end(); } call(); } function end(){ fnc=function(){ alert(result); } call(); } Questo dato mi servirebbe subito dopo la chiamata di call, ma siccome il metodo non è bloccante se lo usassi il contenuto di result non sarebbe quello che mi interessa. Allora mi è venuta in mente l'idea di eseguire una funzione dove io metto ciò che vorrei fare con la variabile(result),in questo esempio la stampo e basta. Il problema sorge quando creo una cascata di sta roba, ad esempio nella funzione(start) definisco la funzione(fnc) la quale, quando sarà in esecuzione ridefinisce se stessa con la funzione(end)... E' un po' contorta come cosa, comunque quando è in cascata crea risultati non previsti. In che modo abbastanza legante posso risolvere questo problemuccio? In pratica quello che vorrei fare sarebbe una cosa del genere Codice:
var v=call(); alert(v); Ultima modifica di MEMon : 31-12-2006 alle 09:42. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
mmm nn capisco...ho provato a fare un log di ciò che succede e tutto sembra al posto giusto...
![]() |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Penso di aver capito il problema, nella funzione main() viene eseguito fnc=null; mentra prima che end() venga eseguita, in questo modo viene distrutta ed end() non viene eseguita...
comunque rimane valida la richiesta di un suggerimento per una soluzione più elegante. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:58.