Apakah mungkin untuk mengatur async: false
saat memanggil $.getJSON()
sehingga panggilan memblokir daripada menjadi asinkron?
105
Apakah mungkin untuk mengatur async: false
saat memanggil $.getJSON()
sehingga panggilan memblokir daripada menjadi asinkron?
Jawaban:
Anda perlu melakukan panggilan menggunakan
$.ajax()
itu secara sinkron, seperti ini:Ini akan cocok saat ini menggunakan
$.getJSON()
seperti ini:sumber
type: 'POST'
opsi untuk mengubahnya menjadi posting - meskipun Anda tidak ingin menggunakannyaasync: false
kecuali Anda benar - benar perlu - itu akan mengunci UI.Kedua jawaban itu salah. Kamu bisa. Anda perlu menelepon
sebelum panggilan json ajax Anda. Dan Anda dapat mengaturnya ke true setelah panggilan retuns (jika ada penggunaan ajax lain di halaman jika Anda ingin async)
sumber
$.ajax
(dan pembungkus singkatan berikutnya$.getJSON
, misalnya$.get
, dll.) Agar sinkron. Lebih lanjut, dokumentasi bahkan menyarankan untuk tidak menggunakan ini: "Deskripsi: Setel nilai default untuk permintaan Ajax di masa mendatang. Penggunaannya tidak disarankan."Saya pikir Anda berdua benar. Jawaban selanjutnya berfungsi dengan baik tetapi ini seperti menyetel opsi global sehingga Anda harus melakukan hal berikut:
sumber
Dalam kasus saya, Jay D benar. Saya harus menambahkan ini sebelum panggilan.
Dalam kode saya sebelumnya, saya memiliki ini:
Ia berhasil menemukan. Lalu saya ganti ke
Lansiran tidak ditentukan.
Jika saya menambahkan ketiga baris tersebut, peringatan akan menampilkan data lagi.
sumber
Jika Anda hanya perlu
await
menghindari kode bersarang:sumber
Saya rasa Anda tidak dapat menyetel opsi itu di sana. Anda harus menggunakan jQuery.ajax () dengan parameter yang sesuai (pada dasarnya getJSON hanya membungkus panggilan itu ke dalam API yang lebih mudah, juga).
sumber
Gulung mis Anda sendiri
sumber