Autore Topic: Chi decide quale funzione Javascript eseguire prima? io o Firefox?  (Letto 2840 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline neruda001

  • Post: 2
ciao a tutti,
non ho trovato nessuna risposta alla mia domanda e quindi posto qui sperando in qualche aiuto!

Ho sviluppato un applicazione in ASP.NET, e utilizzo un file Javascript per riempire dinamicamente dei div con il contenuto elaborato sul server a seguito di un click.

quindi sto usando AJAX.

il fatto è che io ho programmato una funzione Javascript in modo che sequenzialmente mi esegua prima una funzione e poi un'altra, che devono necessariamente essere eseguite in quest'ordine.

quindi ho la funzione:

function ricerca()
{
   popolaRisultati();
   popolaDocumento();
}

function popolaRisultati(){ FA QUELLO CHE DEVE FARE CON AJAX}

function popolaDocumento(){ FA QUELLO CHE DEVE FARE CON AJAX}

bene, il problema è che quando eseguo su IE e su Chrome tutto funziona come deve, invece su Firefox mi fa eseguire sempre prima la funziona popolaDocumento() e poi la funzione popolaRisultati(), a meno che io non inverta l'ordine delle funzioni! cioè sembra che legga le funzioni da eseguire al contrario! infatti se inverto l'ordine funziona bene! solo che poi non funziona più in IE nè su Chrome che invece eseguono le funzioni in base a come sono scritte, sequenzialmente.

 :shock:

c'è qualcosa di strano oppure Firefox ha una gestione delle chiamate alle funzioni Javascript che fa questo gioco? non capisco.

Aiuto!

Grazie!

Pablo.

Offline klades

  • Moderatore
  • Post: 5788
    • http://www.nic-nac-project.org/~kaosmos
Re: Chi decide quale funzione Javascript eseguire prima? io o Firefox?
« Risposta #1 il: 11 Dicembre 2009 16:58:39 »
Ovviamente il codice è interpretato nell'ordine in cui è scritto.
Bisognerebbe però vedere tutto: infatti se popolaRisultati() usa chiamate "asincrone", l'interprete va comunque avanti anche durante la sua esecuzione.

Offline neruda001

  • Post: 2
Re: Chi decide quale funzione Javascript eseguire prima? io o Firefox?
« Risposta #2 il: 14 Dicembre 2009 11:52:39 »
penso anche io che il codice venga eseguito in ordine.

E sono daccordo con te, perchè l'interprete va avanti a fare la seconda chiamata asincrona dopo aver fatto la prima.

solo che quello che ho notato io in questo caso è che fa prima la seconda chiamata asincrona e poi fa la prima, cioè in ordine inverso.

ed è strano.

tanto è vero che ho risolto facendo un controllo sul browser del client, se è Firefox mozilla (io ho 3.5.5) gli faccio eseguire le funzioni prima la 2a e poi la 1a e quindi in esecuzione lui esegue al 1a e la 2a come voglio io. Se invece non è Firefox allora la funzione scritta è in ordine corretto e vengono eseguite in ordine corretto.

Penso che il problema sia dovuto al fatto che sto usando gli ScriptManager di ASP.NET, che si vede forse hanno questo problema con la volpe! Non mi stupirei che questo fatto tanto strano sia dovuto a un BUG nella gestione degli script di ASP.NET in Firefox, anche se potrebbe essere anche un BUG di Firefox.

Klades,

se ti interessa riprodurre l'errore, di dico anche che le due funzioni asincrone chiamano dei PageMethods di ASP.NET.

Ciao! :)   :fx:

0 Utenti e 1 Visitatore stanno visualizzando questo topic.