Rumah  >  Artikel  >  hujung hadapan web  >  Apakah perbezaan antara penyegerakan ajax dan asynchronous

Apakah perbezaan antara penyegerakan ajax dan asynchronous

青灯夜游
青灯夜游asal
2022-01-13 17:47:5310167semak imbas

Perbezaan: 1. Dalam penyegerakan, utas perlu menunggu sehingga utas sebelumnya selesai melaksanakan sebelum ia boleh mula melaksanakan, manakala dalam mod tak segerak, jika utas sedang melaksanakan, utas seterusnya boleh mula melaksanakan tanpa menunggu untuk ia selesai melaksanakan; 2. Penyegerakan Ia adalah operasi satu-benang, manakala operasi tak segerak ialah operasi berbilang benang

Apakah perbezaan antara penyegerakan ajax dan asynchronous

Persekitaran pengendalian tutorial ini: sistem Windows 7, versi JavaScript 1.8.5, komputer Dell G3.

permintaan tak segerak ajax:

Permintaan tak segerak ialah apabila permintaan dibuat, penyemak imbas boleh terus melakukan apa sahaja, dan Ajax menghantar permintaan itu tidak akan menjejaskan pemuatan dan memuatkan halaman. Operasi pengguna adalah bersamaan dengan dua baris, masing-masing berjalan dengan caranya sendiri tanpa menjejaskan satu sama lain. Nilai lalai umum adalah benar. Permintaan tak segerak tidak menjejaskan pengalaman pengguna sama sekali Tidak kira berapa lama atau pendek permintaan itu, pengguna menumpukan perhatian pada mengendalikan kandungan lain pada halaman dan tidak berasa seperti menunggu.

Contohnya:

$.ajax({ 
     type:"POST",
     url:"Venue.aspx?act=init",
      dataType:"html",
     success:function(result){  //function1()
       f1();
       f2(); 
    }
     failure:function (result) { 
      alert('Failed'); 
     },
 }
 function2();

Penjelasan: Dalam kod di atas, apabila blok ajax menghantar permintaan, ia akan kekal dalam function1() dan menunggu pemulangan daripada pelayan, tetapi pada masa yang sama (semasa proses menunggu ini), meja depan akan melaksanakan fungsi2().

permintaan segerak ajax:

Permintaan segerak bermakna selepas permintaan semasa dikeluarkan, penyemak imbas mesti menunggu sehingga permintaan selesai dan data dikembalikan sebelum ia akan dilaksanakan Kod berikutnya adalah bersamaan dengan beratur, iaitu, apabila kod JS dimuatkan ke dalam ajax semasa, semua kod dalam halaman akan berhenti dimuatkan, dan halaman akan berada dalam keadaan. daripada animasi yang digantung. Apabila ajax selesai, halaman kod lain akan terus dijalankan.

Contohnya:

$.ajax({ 
     type:"POST",
     url:"Venue.aspx?act=init",
     dataType:"html",
     async: false,    success:function(result){  //function1()
       f1();
       f2();
     }
    failure:function (result) { 
      alert('Failed'); 
     },
 }
 function2();

Penjelasan: Dalam kod di atas, apabila asyn ditetapkan kepada false, permintaan ajax disegerakkan pada masa ini, iaitu blok ajax menghantar permintaan pada masa ini Selepas itu, dia akan menunggu di function1() dan tidak akan melaksanakan function2() sehingga bahagian function1() selesai.

Selepas membaca maksud permintaan segerak dan tak segerak ajax, mari kita lihat perbezaan antara permintaan segerak ajax dan permintaan tak segerak.

Perbezaan antara permintaan segerak ajax dan permintaan tak segerak:

Penyegerakan bermaksud benang perlu menunggu sehingga urutan sebelumnya selesai dilaksanakan sebelum ia boleh memulakan pelaksanaan. Penyegerakan Ia boleh dianggap sebagai operasi berbenang tunggal Selagi pelanggan membuat permintaan, ia akan berada dalam keadaan menyekat benang sehingga pelayan tidak memberi maklum balas.

Asynchronous bermaksud apabila satu thread sedang dilaksanakan, thread seterusnya boleh memulakan pelaksanaan tanpa menunggu sehingga ia selesai melaksanakan. Asynchronous pastinya multi-threading. Apabila pelanggan meminta, utas lain boleh dilaksanakan, dan utas ini disimpan dalam baris gilirnya dan dilaksanakan dengan teratur.

Asynchronous adalah lebih cekap daripada synchronous. Jika data dikongsi antara benang, penyegerakan mesti digunakan!

Dalam mod tak segerak:

Selepas kami menghantar permintaan menggunakan AJAX, mungkin 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.

Dalam mod segerak:

Selepas kami menghantar permintaan menggunakan AJAX, masih terdapat kod untuk dilaksanakan kemudian . Memproses, tetapi situasi pelaksanaan kod pada masa ini ialah: apabila pelayan tidak bertindak balas atau fungsi JS yang memproses hasil tindak balas belum diproses dan menyelesaikan pemulangan, kod yang tinggal bagi 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.

[Cadangan tutorial berkaitan: Tutorial video AJAX]

Atas ialah kandungan terperinci Apakah perbezaan antara penyegerakan ajax dan asynchronous. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:apa itu ajaxArtikel seterusnya:apa itu ajax