![]() |
![]() |
![]()
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:
Zarówno w Funkcja1 jak i Funkcja2 używam ajaksa poprzez wywołanie:
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? |
|
|
![]() |
![]()
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. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 12.10.2025 - 03:02 |