Penjelasan terperinci tentang object_jquery tertunda jQuery
1. Apakah objek tertunda?
Dalam proses membangunkan tapak web, kami sering menghadapi operasi JavaScript tertentu yang mengambil masa yang lama. Antaranya, terdapat kedua-dua operasi tak segerak (seperti data pelayan membaca ajax) dan operasi segerak (seperti melintasi tatasusunan yang besar), dan hasilnya tidak tersedia serta-merta.
Pendekatan biasa adalah untuk menentukan fungsi panggil balik untuk mereka. Iaitu, nyatakan terlebih dahulu fungsi mana yang harus dipanggil sebaik sahaja ia selesai dijalankan.
Walau bagaimanapun, jQuery sangat lemah apabila ia berkaitan dengan fungsi panggil balik. Untuk mengubahnya, pasukan pembangunan jQuery mereka bentuk objek tertunda.
Ringkasnya, objek tertunda ialah penyelesaian fungsi panggil balik jQuery. Dalam bahasa Inggeris, defer bermaksud "penangguhan", jadi maksud objek tertunda ialah "menangguhkan" pelaksanaan sehingga satu titik tertentu pada masa hadapan.
Ia menyelesaikan masalah cara mengendalikan operasi yang memakan masa, menyediakan kawalan yang lebih baik ke atas operasi tersebut dan antara muka pengaturcaraan bersatu. Fungsi utamanya boleh diringkaskan kepada empat perkara. Di bawah ini kita akan mempelajari langkah demi langkah melalui kod sampel.
2. Kaedah penulisan rantai operasi ajax
Pertama, mari kita semak cara tradisional menulis operasi ajax jQuery:
$.ajax({
url: "test.html",
Kejayaan: function(){
alert("Haha, berjaya!");
},
error:function(){
alert("Sesuatu telah berlaku!");
}
});
Dalam kod di atas, $.ajax() menerima parameter objek Objek ini mengandungi dua kaedah: kaedah kejayaan menentukan fungsi panggil balik selepas operasi berjaya, dan kaedah ralat menentukan fungsi panggil balik selepas operasi gagal.
Selepas operasi $.ajax() selesai, jika anda menggunakan versi jQuery yang lebih rendah daripada 1.5.0, objek XHR akan dikembalikan dan anda tidak boleh melakukan operasi rantaian jika versi lebih tinggi daripada 1.5.0 , objek Tertunda yang dikembalikan boleh dirantai.
Kini, cara penulisan baharu ialah ini:
$.ajax("test.html")
.done(function(){ alert("Haha, successful!"); })
.fail(function(){ alert("Ralat!"); });
Seperti yang anda lihat, done() adalah bersamaan dengan kaedah kejayaan, dan fail() adalah bersamaan dengan kaedah ralat. Selepas menggunakan kaedah penulisan berantai, kebolehbacaan kod bertambah baik.
3. Tentukan berbilang fungsi panggil balik untuk operasi yang sama
Salah satu faedah hebat objek tertunda ialah ia membolehkan anda menambah berbilang fungsi panggil balik secara bebas.
Mengambil kod di atas sebagai contoh, jika selepas operasi ajax berjaya, sebagai tambahan kepada fungsi panggil balik asal, saya juga ingin menjalankan fungsi panggil balik yang lain, apakah yang perlu saya lakukan?
Ia sangat mudah, cuma tambahkannya pada penghujungnya.
$.ajax("test.html")
.done(function(){ alert("Haha, successful!");} )
.fail(function(){ alert("Ralat!"); } )
.done(function(){ alert("Fungsi panggil balik kedua!");} );
Anda boleh menambah seberapa banyak fungsi panggil balik yang anda suka, dan ia akan dilaksanakan mengikut susunan ia ditambahkan.
4. Tentukan fungsi panggil balik untuk berbilang operasi
Satu lagi faedah hebat objek tertunda ialah ia membolehkan anda menentukan fungsi panggil balik untuk berbilang acara, yang tidak boleh dilakukan dengan penulisan tradisional.
Sila lihat kod berikut, yang menggunakan kaedah baharu $.when():
$.when($.ajax("test1.html"), $.ajax("test2.html"))
.done(function(){ alert("Haha, successful!"); })
.fail(function(){ alert("Ralat!"); });
Maksud kod ini ialah melakukan dua operasi pertama $.ajax("test1.html") dan $.ajax("test2.html"). Jika kedua-duanya berjaya, jalankan panggilan balik yang ditentukan oleh fungsi done(). ; jika salah satu gagal atau kedua-duanya gagal, fungsi panggil balik yang ditentukan oleh fail() dilaksanakan.
5 Antara muka fungsi panggil balik untuk operasi biasa (Bahagian 1)
Kelebihan terbesar objek tertunda ialah ia memanjangkan set antara muka fungsi panggil balik ini daripada operasi ajax kepada semua operasi. Dalam erti kata lain, sebarang operasi - sama ada operasi ajax atau operasi tempatan, sama ada operasi tak segerak atau operasi segerak - boleh menggunakan pelbagai kaedah objek tertunda untuk menentukan fungsi panggil balik.
Mari kita lihat contoh khusus. Katakan terdapat operasi yang memakan masa menunggu:
var tunggu = function(){
var tasks = function(){
alert("Pelaksanaan selesai!");
};
setTimeout(tugas,5000);
};
Apakah yang perlu kita lakukan jika kita menentukan fungsi panggil balik untuknya?
Sememangnya, anda akan berfikir bahawa anda boleh menggunakan $.when():
$.bila(tunggu())
.done(function(){ alert("Haha, successful!"); })
.fail(function(){ alert("Ralat!"); });
[kod]
Walau bagaimanapun, jika ditulis seperti ini, kaedah done() akan dilaksanakan serta-merta dan tidak akan berfungsi sebagai fungsi panggil balik. Sebabnya ialah parameter $.when() hanya boleh menjadi objek tertunda, jadi wait() mesti ditulis semula:
[kod]
var dtd = $.Deferred(); // Cipta objek tertunda baharu
var tunggu = fungsi(dtd){
var tasks = function(){
alert("Pelaksanaan selesai!");
dtd.resolve(); // Tukar status pelaksanaan objek tertunda
};
setTimeout(tugas,5000);
kembalikan dtd;
};
Sekarang, fungsi wait() mengembalikan objek tertunda, jadi operasi rantai boleh ditambah.
$.bila(tunggu(dtd))
.done(function(){ alert("Haha, successful!"); })
.fail(function(){ alert("Ralat!"); });
Selepas fungsi wait() dijalankan, fungsi panggil balik yang ditentukan oleh kaedah done() akan dijalankan secara automatik.
6. kaedah deferred.resolve() dan deferred.reject()
Jika anda melihat dengan teliti, anda akan mendapati terdapat tempat lain dalam fungsi wait() di atas yang tidak saya jelaskan. Itulah yang dtd.resolve() lakukan?
Untuk menjelaskan isu ini, kami perlu memperkenalkan konsep baharu "keadaan pelaksanaan". jQuery menetapkan bahawa objek tertunda mempunyai tiga keadaan pelaksanaan - belum selesai, selesai dan gagal. Jika status pelaksanaan "selesai" (diselesaikan), objek tertunda segera memanggil fungsi panggil balik yang ditentukan oleh kaedah done() jika status pelaksanaan "gagal", fungsi panggil balik yang ditentukan oleh kaedah fail() dipanggil; jika status pelaksanaan "tidak berjaya" Selesai", teruskan menunggu, atau panggil fungsi panggil balik yang ditentukan oleh kaedah progress() (ditambah dalam versi jQuery 1.7).
Semasa operasi ajax di bahagian sebelumnya, objek tertunda akan menukar status pelaksanaannya secara automatik berdasarkan hasil pulangan bagaimanapun, dalam fungsi tunggu(), status pelaksanaan ini mesti ditentukan secara manual oleh pengaturcara. Maksud dtd.resolve() ialah menukar status pelaksanaan objek dtd daripada "belum selesai" kepada "selesai", sekali gus mencetuskan kaedah done().
Begitu juga, terdapat juga kaedah deferred.reject(), yang menukar status pelaksanaan objek dtd daripada "tidak lengkap" kepada "gagal", dengan itu mencetuskan kaedah fail().
var dtd = $.Deferred(); // Cipta objek Tertunda baharu
var tunggu = fungsi(dtd){
var tasks = function(){
alert("Pelaksanaan selesai!");
dtd.reject(); // Tukar status pelaksanaan objek Tertunda
};
setTimeout(tugas,5000);
kembalikan dtd;
};
$.bila(tunggu(dtd))
.done(function(){ alert("Haha, successful!"); })
.fail(function(){ alert("Ralat!"); });
7. kaedah deferred.promise()
Masih ada masalah dengan cara penulisan di atas. Iaitu, dtd ialah objek global, jadi status pelaksanaannya boleh diubah dari luar.
Sila lihat kod di bawah:
var dtd = $.Deferred(); // Cipta objek Tertunda baharu
var tunggu = fungsi(dtd){
var tasks = function(){
alert("Pelaksanaan selesai!");
dtd.resolve(); // Tukar status pelaksanaan objek Tertunda
};
setTimeout(tugas,5000);
kembalikan dtd;
};
$.bila(tunggu(dtd))
.done(function(){ alert("Haha, successful!"); })
.fail(function(){ alert("Ralat!"); });
dtd.resolve();
Saya menambah baris dtd.resolve() pada penghujung kod, yang menukar status pelaksanaan objek dtd, sekali gus menyebabkan kaedah done() dilaksanakan serta-merta, dan "Haha, berjaya!" kotak gesaan muncul, dsb. 5 Selepas beberapa saat, kotak gesaan "Pelaksanaan Selesai!" akan muncul.
Untuk mengelakkan situasi ini, jQuery menyediakan kaedah deferred.promise(). Fungsinya adalah untuk mengembalikan objek tertunda lain pada objek tertunda asal yang terakhir hanya membuka kaedah yang tidak berkaitan dengan menukar status pelaksanaan (seperti kaedah done() dan kaedah fail()), dan menyekat kaedah yang berkaitan dengan menukar. status pelaksanaan ( Seperti kaedah resolve() dan kaedah reject()), supaya status pelaksanaan tidak boleh diubah.
Sila lihat kod di bawah:
var dtd = $.Deferred(); // Cipta objek Tertunda baharu
var tunggu = fungsi(dtd){
var tasks = function(){
alert("Pelaksanaan selesai!");
dtd.resolve(); // Tukar status pelaksanaan objek Tertunda
};
setTimeout(tugas,5000);
Kembalikan dtd.promise(); // Kembalikan objek janji
};
var d = tunggu(dtd); // Cipta objek d baharu dan kendalikan objek ini
$.bila(d)
.done(function(){ alert("Haha, successful!"); })
.fail(function(){ alert("Ralat!"); });
d.resolve(); // Pada masa ini, pernyataan ini tidak sah
Dalam kod di atas, fungsi wait() mengembalikan objek janji. Kemudian, kami mengikat fungsi panggil balik pada objek ini dan bukannya objek tertunda asal. Kelebihan ini ialah status pelaksanaan objek ini tidak boleh diubah Jika anda ingin menukar status pelaksanaan, anda hanya boleh mengendalikan objek tertunda asal.
Walau bagaimanapun, cara yang lebih baik untuk menulisnya adalah seperti yang ditunjukkan oleh allenm, untuk menukar objek dtd menjadi objek dalaman fungsi wait().
var tunggu = fungsi(dtd){
var dtd = $.Deferred(); //Dalam fungsi, buat objek Tertunda baharu
var tasks = function(){
alert("Pelaksanaan selesai!");
dtd.resolve(); // Tukar status pelaksanaan objek Tertunda
};
setTimeout(tugas,5000);
Kembalikan dtd.promise(); // Kembalikan objek janji
};
$.bila(tunggu())
.done(function(){ alert("Haha, successful!"); })
.fail(function(){ alert("Ralat!"); });
8 antara muka fungsi panggil balik untuk operasi biasa (tengah)
Cara lain untuk menghalang keadaan pelaksanaan daripada diubah secara luaran ialah menggunakan fungsi pembina $.Deferred() bagi objek tertunda.
Pada masa ini, fungsi tunggu kekal tidak berubah, kami terus menghantarnya ke $.Deferred():
$.Ditunda(tunggu)
.done(function(){ alert("Haha, successful!"); })
.fail(function(){ alert("Ralat!"); });
jQuery menetapkan bahawa $.Deferred() boleh menerima nama fungsi (nota, ia adalah nama fungsi) sebagai parameter, dan objek tertunda yang dijana oleh $.Deferred() akan digunakan sebagai parameter lalai fungsi ini .
9 Antara muka fungsi panggil balik untuk operasi biasa (Bahagian 2)
Selain daripada dua kaedah di atas, kami juga boleh menggunakan antara muka tertunda terus pada objek tunggu.
var dtd = $.Deferred(); // Jana objek Tertunda
var tunggu = fungsi(dtd){
var tasks = function(){
alert("Pelaksanaan selesai!");
dtd.resolve(); // Tukar status pelaksanaan objek Tertunda
};
setTimeout(tugas,5000);
};
dtd.janji(tunggu);
wait.done(function(){ alert("Haha, successful!"); })
.fail(function(){ alert("Ralat!"); });
tunggu(dtd);
Kunci di sini ialah baris dtd.promise(wait), yang digunakan untuk menggunakan antara muka Tertunda pada objek tunggu. Ia adalah tepat kerana baris ini yang done() dan fail() boleh dipanggil terus semasa menunggu kemudian.
10. Ringkasan: Kaedah objek tertunda
Kami telah bercakap tentang pelbagai kaedah objek tertunda. Berikut adalah ringkasan:
(1) $.Deferred() menjana objek tertunda.
(2) deferred.done() menentukan fungsi panggil balik apabila operasi berjaya
(3) deferred.fail() menentukan fungsi panggil balik apabila operasi gagal
(4) Apabila deferred.promise() tidak mempunyai parameter, ia mengembalikan objek tertunda baharu dan status berjalan objek tidak boleh ditukar apabila ia menerima parameter, ia berfungsi untuk menggunakan antara muka tertunda pada objek parameter .
(5) deferred.resolve() Menukar status berjalan objek tertunda secara manual kepada "Selesai", sekali gus mencetuskan kaedah done() serta-merta.
(6) deferred.reject() Kaedah ini betul-betul bertentangan dengan deferred.resolve() Selepas dipanggil, status berjalan bagi objek tertunda akan ditukar kepada "gagal", sekali gus mencetuskan kaedah fail(). serta merta.
(7) $.when() menentukan fungsi panggil balik untuk berbilang operasi.
Selain kaedah ini, objek tertunda juga mempunyai dua kaedah penting, yang tidak diliputi dalam tutorial di atas.
(8)ditunda.kemudian()
Kadangkala untuk menyelamatkan masalah, done() dan fail() boleh ditulis bersama Ini ialah kaedah then().
$.when($.ajax( "/main.php"))
.then(successFunc, failureFunc);
Jika then() mempunyai dua parameter, maka parameter pertama ialah fungsi panggil balik kaedah done() dan parameter kedua ialah kaedah panggil balik bagi kaedah fail(). Jika then() hanya mempunyai satu parameter, ia adalah bersamaan dengan done().
(9) tertunda.selalu()
Kaedah ini juga digunakan untuk menentukan fungsi panggil balik Fungsinya ialah tidak kira sama ada deferred.resolve() atau deferred.reject() dipanggil, ia akan sentiasa dilaksanakan pada akhirnya.
$.ajax( "test.html")
.selalu( function() { alert("Dilaksanakan!");} );

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Penjelasan terperinci kaedah rujukan jQuery: Panduan Mula Pantas jQuery ialah perpustakaan JavaScript yang popular yang digunakan secara meluas dalam pembangunan tapak web Ia memudahkan pengaturcaraan JavaScript dan menyediakan pemaju dengan fungsi dan ciri yang kaya. Artikel ini akan memperkenalkan kaedah rujukan jQuery secara terperinci dan menyediakan contoh kod khusus untuk membantu pembaca bermula dengan cepat. Memperkenalkan jQuery Pertama, kita perlu memperkenalkan perpustakaan jQuery ke dalam fail HTML. Ia boleh diperkenalkan melalui pautan CDN atau dimuat turun

Bagaimana untuk mengalih keluar atribut ketinggian elemen dengan jQuery? Dalam pembangunan bahagian hadapan, kita sering menghadapi keperluan untuk memanipulasi atribut ketinggian elemen. Kadangkala, kita mungkin perlu menukar ketinggian unsur secara dinamik, dan kadangkala kita perlu mengalih keluar atribut ketinggian unsur. Artikel ini akan memperkenalkan cara menggunakan jQuery untuk mengalih keluar atribut ketinggian elemen dan memberikan contoh kod khusus. Sebelum menggunakan jQuery untuk mengendalikan atribut ketinggian, kita perlu terlebih dahulu memahami atribut ketinggian dalam CSS. Atribut ketinggian digunakan untuk menetapkan ketinggian elemen

Bagaimana untuk menggunakan kaedah permintaan PUT dalam jQuery? Dalam jQuery, kaedah menghantar permintaan PUT adalah serupa dengan menghantar jenis permintaan lain, tetapi anda perlu memberi perhatian kepada beberapa butiran dan tetapan parameter. Permintaan PUT biasanya digunakan untuk mengemas kini sumber, seperti mengemas kini data dalam pangkalan data atau mengemas kini fail pada pelayan. Berikut ialah contoh kod khusus menggunakan kaedah permintaan PUT dalam jQuery. Mula-mula, pastikan anda memasukkan fail perpustakaan jQuery, kemudian anda boleh menghantar permintaan PUT melalui: $.ajax({u

jQuery ialah perpustakaan JavaScript yang pantas, kecil dan kaya dengan ciri yang digunakan secara meluas dalam pembangunan bahagian hadapan. Sejak dikeluarkan pada tahun 2006, jQuery telah menjadi salah satu alat pilihan untuk banyak pembangun, tetapi dalam aplikasi praktikal, ia juga mempunyai beberapa kelebihan dan kekurangan. Artikel ini akan menyediakan analisis mendalam tentang kelebihan dan kekurangan jQuery dan menggambarkannya dengan contoh kod khusus. Kelebihan: 1. Sintaks ringkas Reka bentuk sintaks jQuery adalah ringkas dan jelas, yang boleh meningkatkan kebolehbacaan dan kecekapan menulis kod. sebagai contoh,

Tajuk: Petua jQuery: Cepat ubah suai teks semua teg pada halaman Dalam pembangunan web, kita selalunya perlu mengubah suai dan mengendalikan elemen pada halaman. Apabila menggunakan jQuery, kadangkala anda perlu mengubah suai kandungan teks semua teg dalam halaman sekaligus, yang boleh menjimatkan masa dan tenaga. Berikut akan memperkenalkan cara menggunakan jQuery untuk mengubah suai teks semua teg pada halaman dengan cepat, dan memberikan contoh kod khusus. Pertama, kita perlu memperkenalkan fail perpustakaan jQuery dan memastikan bahawa kod berikut dimasukkan ke dalam halaman: <

Tajuk: Gunakan jQuery untuk mengubah suai kandungan teks semua teg jQuery ialah perpustakaan JavaScript yang popular yang digunakan secara meluas untuk mengendalikan operasi DOM. Dalam pembangunan web, kita sering menghadapi keperluan untuk mengubah suai kandungan teks tag pautan (tag) pada halaman. Artikel ini akan menerangkan cara menggunakan jQuery untuk mencapai matlamat ini dan memberikan contoh kod khusus. Pertama, kita perlu memperkenalkan perpustakaan jQuery ke dalam halaman. Tambahkan kod berikut dalam fail HTML:

Bagaimana untuk mengetahui sama ada elemen jQuery mempunyai atribut tertentu? Apabila menggunakan jQuery untuk mengendalikan elemen DOM, anda sering menghadapi situasi di mana anda perlu menentukan sama ada sesuatu elemen mempunyai atribut tertentu. Dalam kes ini, kita boleh melaksanakan fungsi ini dengan mudah dengan bantuan kaedah yang disediakan oleh jQuery. Berikut akan memperkenalkan dua kaedah yang biasa digunakan untuk menentukan sama ada elemen jQuery mempunyai atribut khusus, dan melampirkan contoh kod tertentu. Kaedah 1: Gunakan kaedah attr() dan operator jenis // untuk menentukan sama ada elemen mempunyai atribut tertentu

jQuery ialah perpustakaan JavaScript popular yang digunakan secara meluas untuk mengendalikan manipulasi DOM dan pengendalian acara dalam halaman web. Dalam jQuery, kaedah eq() digunakan untuk memilih elemen pada kedudukan indeks tertentu Senario penggunaan dan aplikasi khusus adalah seperti berikut. Dalam jQuery, kaedah eq() memilih elemen pada kedudukan indeks yang ditentukan. Kedudukan indeks mula dikira dari 0, iaitu indeks elemen pertama ialah 0, indeks elemen kedua ialah 1, dan seterusnya. Sintaks kaedah eq() adalah seperti berikut: $("s
