Czy można ustawić async: false
podczas wywoływania $.getJSON()
tak, aby wywołanie blokowało się, a nie było asynchroniczne?
105
Czy można ustawić async: false
podczas wywoływania $.getJSON()
tak, aby wywołanie blokowało się, a nie było asynchroniczne?
Odpowiedzi:
Musisz nawiązać połączenie, używając
$.ajax()
do niego synchronicznie, na przykład:Pasowałoby to obecnie przy użyciu
$.getJSON()
takiego:źródło
type: 'POST'
opcję, aby przekształcić go w post - chociaż nie chcesz go używać,async: false
chyba że naprawdę musisz - spowoduje to zablokowanie interfejsu użytkownika.Obie odpowiedzi są błędne. Możesz. Musisz zadzwonić
przed wywołaniem json ajax. I możesz ustawić to na true po ponownym wywołaniu połączenia (jeśli są inne zastosowania Ajax na stronie, jeśli chcesz, aby były asynchroniczne)
źródło
$.ajax
(z późniejszymi owijarki skrócone tj$.getJSON
,$.get
itp) jest synchroniczny. Ponadto dokumentacja sugeruje nawet, aby nie używać tego: „Opis: Ustaw wartości domyślne dla przyszłych żądań Ajax. Nie zaleca się jego używania”.Myślę, że oboje macie rację. Późniejsza odpowiedź działa dobrze, ale przypomina ustawienie opcji globalnej, więc musisz wykonać następujące czynności:
źródło
W moim przypadku Jay D ma rację. Muszę to dodać przed rozmową.
W moim poprzednim kodzie mam to:
To działa znaleźć. Potem zmieniam na
Alert jest niezdefiniowany.
Jeśli dodam te trzy linie, alert ponownie pokaże dane.
źródło
Jeśli chcesz tylko
await
uniknąć zagnieżdżania kodu:źródło
Myślę, że nie można tam ustawić tej opcji. Będziesz musiał użyć jQuery.ajax () z odpowiednimi parametrami (w zasadzie getJSON po prostu opakowuje to wywołanie w łatwiejsze API).
źródło
Zroluj własny np
źródło