HighDots Forums  

XmlHttpRequest e flusso di esecuzione del programma

Javascript (Italian) Il linguaggio JavaScript (it.comp.lang.javascript)


Discuss XmlHttpRequest e flusso di esecuzione del programma in the Javascript (Italian) forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
Pablo Xon
 
Posts: n/a

Default XmlHttpRequest e flusso di esecuzione del programma - 05-27-2008 , 07:29 AM






Ciao,
sono "incocciato" in una situazione che temo essere il classico uovo di
colombo.

Ho una funzione così strutturata:
function pluto() {
showdiv();
callxhr();
hidediv();
}

show e hide div non fanno altro che, rispettivamente, mostrare e
nascondere un div a tutto schermo, trasparente, con l'indicazione di
"caricamento in corso";
callxhr è una funzione che, ottenuto l'oggetto XMLHttpRequest lo usa per
effettuare l'open: xhr.open("GET","/pippo?id="+id,false) e poi il send.

Il problema è che se eseguo la funzione principale il div non viene
mostrato, viene chiamata la callxhr e, infine, il div viene mostrato e
subito nascosto.
Se, per esempio, aggiungo dopo showdiv() un alert, il tutto funziona
regolarmente (il div viene visualizzato, compare l'alert, vengono
caricati i dati da xhr e infine il div viene nascosto).

Mi chiedevo: la false passata al metodo open non dovrebbe rendere
sincrona l'operazione e quindi "rispettare" il normale flusso
dell'applicazione?

Il tutto testato su vari browser, tra l'altro mi sembrava di aver giÃ*
incontrato questo "problema" e averlo risolto banalmente, ma la
vecchiaia tira brutti scherzi e la fretta anche peggio...

Se qualcuno ha tempo/voglia di darmi qualche dritta...
In caso serva posso postare altro codice.

Grazie anticipatamente, buon lavoro,
Paolo

Reply With Quote
  #2  
Old   
Cristiano Larghi
 
Posts: n/a

Default Re: XmlHttpRequest e flusso di esecuzione del programma - 05-27-2008 , 07:39 AM






Il Tue, 27 May 2008 14:29:32 +0200, Pablo Xon ha scritto:

Quote:
Ho una funzione così strutturata:
function pluto() {
showdiv();
callxhr();
hidediv();
}

show e hide div non fanno altro che, rispettivamente, mostrare e
nascondere un div a tutto schermo, trasparente, con l'indicazione di
"caricamento in corso";
callxhr è una funzione che, ottenuto l'oggetto XMLHttpRequest lo usa per
effettuare l'open: xhr.open("GET","/pippo?id="+id,false) e poi il send.

Il problema è che se eseguo la funzione principale il div non viene
mostrato, viene chiamata la callxhr e, infine, il div viene mostrato e
subito nascosto.
Devi far "respirare" il browser, poveretto (non esiste il DoEvents, per
intenderci)
quindi:
- showdiv
- setTimeout altra function che fa il resto:
http://developer.mozilla.org/en/docs...dow.setTimeout

p.s. se cerchi con google in questo newsgroup vedrai che la domanda è stata
posta un fantastiliardo di volte

--
"Voi abili a tenere sempre un piede qua e uno là
avrete un avvenire certo in questo mondo qua
però la dignità
dove l'avete persa?"
V.R.


Reply With Quote
  #3  
Old   
Pablo Xon
 
Posts: n/a

Default Re: XmlHttpRequest e flusso di esecuzione del programma - 05-27-2008 , 07:52 AM



Cristiano Larghi ha scritto:
Quote:
quindi:
- showdiv
- setTimeout altra function che fa il resto:
Avevo pensato anch'io all'uso di setTimeout, l'unico dubbio era appunto
quello sulla "sincronicità". Mi sembrava ridondante usare una chiamata
sincrona e un timeout allo stesso tempo...

Quote:
p.s. se cerchi con google in questo newsgroup vedrai che la domanda è stata
posta un fantastiliardo di volte
Hai ragione...

Grazie, ciao,
Paolo


Reply With Quote
  #4  
Old   
Cristiano Larghi
 
Posts: n/a

Default Re: XmlHttpRequest e flusso di esecuzione del programma - 05-27-2008 , 07:58 AM



Il Tue, 27 May 2008 14:52:22 +0200, Pablo Xon ha scritto:

Quote:
Avevo pensato anch'io all'uso di setTimeout, l'unico dubbio era appunto
quello sulla "sincronicità". Mi sembrava ridondante usare una chiamata
sincrona e un timeout allo stesso tempo...
ma il setTimeout lo usi prima della chiamata sincrona, sono 2 cose diverse
.... (altrimenti usala asincrona)

--
"Run rabbit run
dig that hole, forget the sun
and when at last the work is done
don't sit down, it's time to dig another one"
P.F.


Reply With Quote
  #5  
Old   
Pablo Xon
 
Posts: n/a

Default Re: XmlHttpRequest e flusso di esecuzione del programma - 05-27-2008 , 08:26 AM



Cristiano Larghi ha scritto:
Quote:
ma il setTimeout lo usi prima della chiamata sincrona, sono 2 cose diverse
Chiaro.
La cosa che mi lascia(va) perplesso è il fatto che chiami una funzione
senza aver prima completato la precedente (il 'far "respirare" il
browser' di cui parlavi tu ).

Ciao,
Paolo


Reply With Quote
  #6  
Old   
Cristiano Larghi
 
Posts: n/a

Default Re: XmlHttpRequest e flusso di esecuzione del programma - 05-27-2008 , 08:39 AM



Il Tue, 27 May 2008 15:26:41 +0200, Pablo Xon ha scritto:

Quote:
La cosa che mi lascia(va) perplesso è il fatto che chiami una funzione
senza aver prima completato la precedente (il 'far "respirare" il
browser' di cui parlavi tu ).
javascript la ha terminata, ma il flusso continua nella function e il
browser "aspetta" per aggiornare la visualizzazione

--
"Emancipate yourselves from mental slavery;
None but ourselves can free our minds"
B.M.


Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.