Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dziwna kolejność wykonywania akcji
JoShiMa
post
Post #1





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

Ostrzeżenie: (0%)
-----


Mam z grubsza taki kod w JS:

  1. blnCheck = Funkcja1
  2.  
  3. if(blnCheck ) {
  4. //jakies obliczenia
  5. Funkcja2
  6. }


Zarówno w Funkcja1 jak i Funkcja2 używam ajaksa poprzez wywołanie:

  1. jQuery.post('link_do _kontrolera',dane...


W obu funkcjach są to inne kontrolery.

I teraz zadziwiająca rzecz. Przynajmniej dla mnie zadziwiająca. Najpierw wykonuje się zapytanie z Funkcja2 a dopiero potem z Funkcja1. Co robię źle?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
ano
post
Post #2





Grupa: Zarejestrowani
Postów: 435
Pomógł: 40
Dołączył: 16.02.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


To rozwiazanie jest słabe bo wszystkie ajaxowe requesty będą Ci szły synchronicznie, co nie jest OK.
Najlepiej dla tych dwóch requestów, które potrzebujesz zsynchronizować użyć Deffered Object.
Przykładowy kod, którego kiedyś używałem:
Kod
// using deferred object
var mySynchRequest = function() {
    var dfd = new jQuery.Deferred();
    
    $.post("url", queryData,
        function(data){
            if(data == undefined) {
                dfd.resolve(false);
            }
            else {
                dfd.resolve(true);
            }
        }, "json");
        
    return dfd.promise();
}


dfd.promise() zwróci to, co było argumentem dfd.resolve().
Czyli np. dla poprawnego requestu zwróciłoby tam true.

albo np.
dfd.resolve("test");
return dfd.promise(); // => test

i ta funkcja mySynchRequest będzie synchroniczna.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 12.10.2025 - 03:02