MEMon
31-12-2006, 09:22
C'è un modo per creare in javascript un metodo bloccante?
Vi espongo il mio problema:
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();
}
In pratica ho una funzione non bloccante(call) che chiama un'altra funzione(main) dove viene eseguito del codice che salva il risultato in una variabile(result).
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
var v=call();
alert(v);
Ma che non posso fare in quanto non posso passare la variabile(result) dalla funzione(main) alla funzione(call)
Vi espongo il mio problema:
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();
}
In pratica ho una funzione non bloccante(call) che chiama un'altra funzione(main) dove viene eseguito del codice che salva il risultato in una variabile(result).
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
var v=call();
alert(v);
Ma che non posso fare in quanto non posso passare la variabile(result) dalla funzione(main) alla funzione(call)