Penyegerakan Ajax bermakna apabila kod JavaScript dimuatkan ke dalam ajax semasa, semua pemuatan kod dalam halaman akan berhenti dan halaman akan berada dalam keadaan animasi yang digantung Selepas ajax dilaksanakan, halaman tersebut akan berada dalam keadaan animasi yang digantung Kod Teruskan berjalan; ajax asynchronous bermakna kod lain juga boleh dijalankan apabila kod ajax semasa sedang berjalan.
Persekitaran pengendalian artikel ini: sistem windows10, versi javascript1.8.5&&&html5, komputer Dell G3.
(1) Penyegerakan bermakna apabila kod JS dimuatkan ke dalam AJAX semasa, semua kod dalam halaman akan berhenti dimuatkan, dan halaman akan menjadi dalam keadaan animasi yang digantung Apabila ini Selepas AJAX dilaksanakan, keadaan halaman yang digantung akan dikeluarkan dan kod akan terus dijalankan.
(2) Asynchronous bermaksud kod lain boleh dijalankan semasa kod AJAX semasa sedang dijalankan.
async:false jquery, atribut ini
menjadi lalai kepada true: asynchronous, false: synchronous.
Contohnya adalah seperti berikut:
$.ajax({ url: prefix + "/exportById", data: {ids:ids}, type: 'POST', traditional: true, cache:false, async:false, success: function (result) { if (result.code == web_status.SUCCESS) { window.location.href = ctx + "common/download?fileName=" + result.msg + "&delete=" + true; } else { alert("导出失败"); } } });
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 ajax untuk meminta secara serentak, bagaimanakah kita harus melaksanakan permintaan segerak ini? 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 kaedah pelaksanaan: segerak (async = false) dan tak segerak (async = true) mengikut nilai async. ; Adalah disyorkan untuk menggunakan pelaksanaan asynchronous dalam tutorial W3C
Mari kita bezakan antara penyegerakan dan asynchronousness:
Asynchronous: Dalam mod tak segerak, selepas kami menggunakan AJAX untuk menghantar permintaan , Mungkin masih terdapat 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 komunikasi 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. Perlu menunggu maklumat pemulangan daripada penerima
Isu penyegerakan yang sering kita 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.
【Tutorial berkaitan yang disyorkan: Tutorial video AJAX】
Atas ialah kandungan terperinci Apakah itu ajax segerak dan tak segerak. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!