Newsgroup: it.comp.lang.javascript
Titolo: Domanda su [set|clear]Timeout

Ciao a tutti,
scusate, non ho saputo mettere un Subject migliore :(
vorrei permettere l'evocazione multipla di una funzione con l'esecuzione
ritardata che elimina il lancio schedulato in precedenza
il tutto scrivendo una sola funzione
quello a cui ho concepito è questo:
function action( )
{
	function myAct( )
	{
		alert( 'ciao' );
		action.timerID = null;
	}
	if( action.timerID )
	{
		clearTimeout( action.timerID );
		action.timerID = null;
	}
	action.timerID = setTimeout( myAct, 500 );
}
e come si può vedere utilizzo una variabile "statica privata" per salvare
il riferimento del timeout, evitando variabili globali e/o chiusure, pero'
"chiudo" myAct() che è la vera azione che prima o poi viene lanciata
Cosa dite, c'è qualche altro modo "carino" per fare questa cosa?

 Cosa dite, c'è qualche altro modo "carino" per fare questa cosa?
Ragionare a oggetti invece che in termini di funzioni, ad esempio?
-- 
~ "Quando i morti camminano, signori, bisogna smettere di uccidere.
O si perde la guerra." (Zombie)

 Ragionare a oggetti invece che in termini di funzioni, ad esempio?
:"(
E' una persecuzione anche in questo caso? :(
Ok, cmq a dire la verità ci avevo provato, pero' a parte i diversi approci
che immagino che ci possono essere, io mi trovo in difficoltà all'ultimo
quando devo associare all'event handler il risultato di un metodo del mio
oggetto, e cioè
supponiamo che debba agire sull'onclick di un bottone
ad un certo punto dovrò fare qualcosa tipo:
document.getElementById( 'btn1' ).onclick = a.action( );
il chè andrebbe anche,
però ho come minimo fatto una chiusura sul this
:(

 però ho come minimo fatto una chiusura sul this
Premesso che personalmente le closure le considero uno strumento da
utilizzare solo se si è ben consapevoli di tutte le implicazioni; e
- soprattutto - mai abusarne; se le closure vengono effettuate solo
su oggetti JS le si possono usare più in tranquillità. E' quando si
ha a che fare con il DOM (e soprattutto con IE) che bisogna andarci
con i piedi di piombo (nonostante molti leak siano stati corretti).
-- 
~ Always remember you're unique, just like everyone else.

 Ragiona a oggetti, non ha singoli elementi e funzioni.
allora, ci provo:
dovrei pensare ad un oggetto che genericamente ritarda delle esecuzioni,
queste esecuzioni possono essere personalizzate estendendo questo oggetto e
all'oggetto instanziato da qualche parte gli si passa l'informazione di
quali "eventi DOM" va applicata la suddetta azione estensa (passando
id/reference ed evento o qualcosa del genere)?
una cosa strutturata in questo modo è più OOP? 
altrimenti come può essere orientata ad oggetti questa cosa?
io ho un tot di eventi da gestire che lanciano in esecuzione un'azione che
viene "zompata" da un'eventuale altra occorsa prima che la precendete fosse
eseguita
quando mi dici, "pensala ad oggetti", mi sa' che ho una serie difficoltà,
hai tempo di descrivermi il processo mentale che mi dovrebbe venire anche
più naturale a cui cercherò poi di affiancare una soluzione?
Grazie

 rifiutare, 
Non rifiuto solo quel genere di offerte che contemplano donzelle, e
magari bionde con gli occhi azzurri.. il resto è sempre discutibile
invece. :P
Tornando seri, anni fa c'era in ballo qualcosa del genere, ma non è
una cosa facile da farsi, né da organizzare - in gruppi intendo - e
si perse il momento.
Tra l'altro adesso sto cercando di dedicarmi ad altro (Flex/AIR), e
avrei poco tempo.
Inoltre, le cose lato web stanno per cambiare in modo rilevante, un
po' come successe ai tempi di IE4/NS4.. E ci sarà parecchio da fare
e da studiare. :)
-- 
~ Chi segue gli altri, non arriva mai primo.

 e da studiare. :)
io non ci trovo niente da sorridere
non dire così, che mi viene la depressione :(

 non dire così, che mi viene la depressione :(
male: dovresti esserne affascinato invece...
in questo "mestiere" fossilizzarsi vuol dire restare fregati, ogni
tecnologia e' "transitoria", apprenderla deve insegnarti a riconoscere quei
"patterns" comuni che invece non cambiano mai, che ti permetteranno di
imparare facilmente qualunque novita', e contemporaneamente, evitare che le
sinapsi del tuo cervello si blocchino, mantenendo una mente agile.
sembra facile detta cosi', comunque il segreto e' "tutto" qui
-- 
Piu' che ecoballe c'erano tante balle e basta.

 non dire così, che mi viene la depressione :(
Vale anche per me la risposta che ti ha dato Claudio, sebbene un po'
ti capisca. :)
-- 
~ "Le leggi sono come le ragnatele:
abbastanza forti per catturare i deboli,
troppo deboli per trattenere i forti."
(Anacarsi lo Scita)

 sinapsi del tuo cervello si blocchino, mantenendo una mente agile.
Concordo appieno; chi mi conosce lo sa che sfondi una porta aperta.
Però, diciamocelo: chi tra di noi non ha mai pensato che sarebbe stato
decisamente meglio se fossimo andati a coltivar patate? Oppure, aprire
un bar sulle sponde di una qualche spiaggia; o che, dopotutto, fare un
lavoro come l'idraulico o l'elettricista sarebbe stato meno stressante
e ben più remunerativo di questo...
Delle volte penso che questo lavoro sia un po' "malato". E che seppure
ci stai attento, t'ammali un po' anche tu.
E se a qualcuno ogni tanto viene la depressione pensandoci... beh, si,
lo capisco un po'.
-- 
~ "Io rispetto molto la stupidità umana.
E' la sola cosa che mi dia un'idea dell'eternità."
(Voltaire)

 e ben più remunerativo di questo...
+1 !
-- 
"Ti sei salvato
 o sei entrato in banca pure tu?"
									    A.V.

 +1 !
Eheh, lo supponevo. :)
Ma in fondo, il punto č che questo non č un lavoro che "scegli" tu. Ti
sceglie lui. Se anche fossimo andati a coltivar la terra, alla fine si
sarebbe creato un sistema centralizzato d'irrigazione configurabile da
web tramite chiamate HTTP. :)
-- 
~ "Solo i morti hanno visto la fine della guerra."
(Platone)

 Eheh, lo supponevo. :)
lo so :-)
(il resto per ora via msn causa Grande Fratello, tra poco in diretta su
questi schermi)
-- 
"qualcuno è andato per età
 qualcuno perchè già dottore
 e insegue una maturità, si è sposato, fa carriera
 ed è una morte un po' peggiore"
									    F.G.

 web tramite chiamate HTTP. :)
ora ti manca solo trovare un finanziatore e sei il re del Chiantishire :)
