ajax ialah permintaan tak segerak secara lalai, anda boleh menentukan sama ada permintaan tak segerak berdasarkan nilai tak segerak, ini bermakna permintaan ajax adalah segerak nilai async adalah benar, ini bermakna permintaan Ajax adalah asynchronous, dan nilai async adalah "true" secara lalai, jadi permintaan ajax adalah asynchronous secara lalai.
Persekitaran pengendalian artikel ini: sistem windows10, versi javascript1.8.5&&&html5, komputer Dell G3.
ajax diserahkan secara tak segerak secara lalai
AJAX dibahagikan kepada "palsu" segerak dan tak segerak mengikut nilai async berbeza "benar", manakala nilai async adalah benar secara lalai (penyerahan tak segerak). Kelebihan ini ialah ia boleh meningkatkan pengalaman pengguna melalui penyegaran separa, di samping menjimatkan sumber dan mengurangkan tekanan pada pangkalan data.
ajax ialah permintaan tak segerak secara lalai, iaitu async:true, anda boleh menjadikannya segerak dengan menetapkan parameter asycn:false
$.ajax({ url: 'www.test.com/test/test', type: 'POST', data: {name:"test"} async: false, error: function() { console.log('error'); }, success: function(resp) { console.log('success'); } });
Nota: Jika anda mempunyai jenis ini operasi. Saya menulis bendera = palsu sebelum memanggil ajax; tetapi operasi seperti menetapkan bendera = benar dalam panggilan balik kejayaan ajax tidak boleh mendapatkan hasil yang diingini dalam keadaan tak segerak.
Oleh kerana ajax adalah tak segerak secara lalai, adalah mungkin untuk melaksanakan bendera panggil balik = operasi benar selepas anda menyelesaikan operasi berikutnya! !
Pengetahuan lanjutan:
Bagaimanakah AJAX melaksanakan permintaan segerak?
Permintaan Ajax dibahagikan kepada permintaan segerak dan permintaan tak segerak, tetapi permintaan lalai ialah permintaan tak segerak Jadi, apabila kita ingin menggunakan permintaan segerak ajax, bagaimanakah kita harus melaksanakan permintaan segerak ini? Kain bulu? Artikel berikut akan memperkenalkan kepada anda kaedah pelaksanaan permintaan penyegerakan ajax. Rakan yang memerlukan boleh merujuknya. Saya harap ia akan membantu anda.
Pertama sekali, kita harus tahu bahawa penyegerakan ialah satu utas, dan kod tersebut dilaksanakan mengikut tertib Apabila kod js dimuatkan ke dalam permintaan ajax segerak semasa, semua kod lain pada halaman berhenti memuatkan. dan halaman berada dalam keadaan animasi yang digantung , sehingga permintaan selesai, permintaan lain akan dilaksanakan.
Kedua, kita harus tahu bahawa ajax dibahagikan kepada dua kaedah permintaan: segerak dan tak segerak mengikut nilai async apabila nilai async adalah benar, ia adalah kaedah permintaan asynchronous nilai async adalah palsu, ia adalah kaedah permintaan asynchronous, jadi untuk melaksanakan permintaan segerak ajax, anda hanya perlu menetapkan nilai async kepada false.
$.ajax( type:“POST”/“GET” url:"", data:{}, dataType:"json", async:false, //同步 success:function(response){ } );
Apakah perbezaan antara permintaan segerak dan tak segerak Ajax dan apakah senario penggunaannya?
Pemahaman 1:
AJAX dibahagikan kepada dua jenis mengikut nilai async: segerak (async = false) dan asynchronous (async = benar) Pelaksanaan tak segerak disyorkan dalam tutorial W3C;
Mari kita bezakan perbezaan antara penyegerakan dan tak segerak:
Asynchronous: Dalam mod tak segerak, apabila kami menggunakan AJAX untuk menghantar Selepas permintaan, ada mungkin kod yang perlu dilaksanakan. Pada masa ini, pelayan mungkin tidak membalas permintaan kami atas pelbagai sebab, tetapi kerana kami menggunakan pelaksanaan tak segerak, kod yang tinggal dalam semua fungsi yang mengandungi kod permintaan AJAX akan terus dilaksanakan. Jika kita menyerahkan hasil permintaan kepada fungsi JS yang lain untuk diproses, maka ia akan menjadi seperti dua utas yang dilaksanakan pada masa yang sama.
Penyegerakan: Dalam mod segerak, selepas kami menggunakan AJAX untuk menghantar permintaan, masih terdapat kod yang perlu dilaksanakan kemudian Kami juga menyerahkan respons pelayan kepada fungsi JS yang lain untuk diproses, tetapi pelaksanaan kod pada masa ini Ya: Apabila pelayan tidak bertindak balas atau fungsi JS yang memproses hasil respons belum memproses pulangan, kod baki fungsi yang mengandungi kod permintaan tidak boleh dilaksanakan. Sama seperti satu utas, ia memasuki keadaan menyekat selepas permintaan dikeluarkan, dan kod yang selebihnya tidak akan terus dilaksanakan sehingga ia mencapai keadaan disekat.
Bagaimana untuk memilih mod segerak atau tak segerak? Untuk menjawab soalan ini, kami boleh menjawabnya melalui soalan yang mungkin berikut:
Selepas menghantar permintaan AJAX, kami masih perlu terus memproses hasil respons pelayan jika kami menggunakan mod permintaan tak segerak pada ini masa dan tidak Pemprosesan keputusan dikendalikan oleh fungsi JS yang lain. Pada masa ini, situasi ini mungkin berlaku: tindak balas kepada permintaan tak segerak belum tiba, dan fungsi telah selesai melaksanakan penyataan pulangan, yang akan menyebabkan hasil pulangan menjadi rentetan kosong.
Pemahaman 2:
Segerak: Hantar permintaan, tunggu pengembalian, dan kemudian hantar permintaan seterusnya
Asynchronous: Hantar permintaan, jangan tunggu Kembali, anda boleh menghantar permintaan seterusnya pada bila-bila masa
Penyegerakan boleh mengelakkan kebuntuan dan bacaan data yang kotor Ia biasanya digunakan apabila berkongsi sumber tertentu Jika semua orang mempunyai kebenaran pengubahsuaian dan mengubah suai fail masa yang sama, Ada kemungkinan untuk seseorang membaca kandungan yang telah dipadamkan oleh orang lain, ralat akan berlaku, dan penyegerakan akan diubah suai mengikut urutan.
Asynchronous boleh meningkatkan kecekapan Pada masa kini, CPU adalah dwi-teras atau quad-core Jika anda memproses secara tidak segerak, anda boleh melakukan berbilang tugas pada masa yang sama, anda mesti memastikan ia boleh diproses secara serentak .
Perbezaan terbesar antara segerak dan tak segerak ialah. Seseorang perlu menunggu, seseorang tidak.
Menghantar mesej teks, sebagai contoh, ialah contoh tak segerak. Inisiator tidak mengambil berat tentang status penerima. Tidak perlu menunggu maklumat pemulangan daripada penerima, dan penghantaran seterusnya boleh dijalankan.
Panggilan telefon ialah contoh penyegerakan. Inisiator perlu menunggu penerima, dan komunikasi tidak bermula sehingga panggilan disambungkan. Anda perlu menunggu maklumat pemulangan daripada penerima
Dan isu penyegerakan yang sering kami bincangkan kebanyakannya berlaku dalam isu perkongsian data dalam persekitaran berbilang benang. Iaitu, apabila berbilang utas perlu mengakses sumber yang sama, mereka perlu berada dalam susunan tertentu untuk memastikan sumber itu hanya boleh diakses oleh satu utas pada masa tertentu Jika tak segerak digunakan, hasil jalanan program akan menjadi tidak dapat diramalkan. Oleh itu, dalam kes ini, data mesti disegerakkan, iaitu, hanya satu proses boleh mengakses sumber, dan benang lain mesti menunggu.
Mekanisme untuk mencapai penyegerakan terutamanya termasuk bahagian kritikal, mutex, semaphore dan peristiwa
Bahagian kritikal: akses sumber awam atau Sekeping kod yang pantas dan sesuai untuk mengawal capaian data. Hanya satu utas dibenarkan untuk mengakses sumber yang dikongsi pada bila-bila masa Jika beberapa utas cuba mengakses sumber awam, selepas satu utas masuk, utas lain yang cuba mengakses sumber awam akan digantung dan menunggu sehingga mereka memasuki bahagian kritikal dan bahagian kritikal dilepaskan, benang lain boleh mendahuluinya.
Mutex: menggunakan mekanisme objek mutex. Hanya utas yang memiliki objek saling eksklusif mempunyai kebenaran untuk mengakses sumber awam Kerana hanya terdapat satu objek yang saling eksklusif, sumber awam tidak akan diakses oleh berbilang rangkaian pada masa yang sama. Mutex bukan sahaja dapat merealisasikan perkongsian selamat sumber awam bagi aplikasi yang sama, tetapi juga menyedari perkongsian selamat sumber awam bagi aplikasi yang berbeza adalah lebih rumit daripada bahagian kritikal. Kerana penggunaan pengecualian bersama bukan sahaja boleh mencapai perkongsian sumber yang selamat di antara utas yang berbeza dari aplikasi yang sama, tetapi juga mencapai perkongsian sumber yang selamat antara utas aplikasi yang berbeza.
Semaphore: Ia membenarkan berbilang utas untuk mengakses sumber yang sama pada masa yang sama, tetapi ia perlu mengehadkan bilangan maksimum utas yang boleh mengakses sumber ini pada masa yang sama. Cara objek semaphore menyegerakkan utas adalah berbeza daripada kaedah sebelumnya. Ia menunjukkan bilangan maksimum utas yang boleh mengakses sumber yang dikongsi pada masa yang sama. Ia membenarkan berbilang utas untuk mengakses sumber yang sama pada masa yang sama, tetapi perlu mengehadkan bilangan maksimum utas yang boleh mengakses sumber ini pada masa yang sama.
Acara: Kekalkan penyegerakan rangkaian melalui operasi pemberitahuan, dan juga memudahkan perbandingan keutamaan berbilang rangkaian.
[Cadangan tutorial berkaitan: Tutorial video AJAX]
Atas ialah kandungan terperinci Adakah permintaan asynchronous ajax secara lalai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!