jQuery 1.5 menambahkan "Objek yang Ditunda". Apa itu, dan apa sebenarnya yang mereka lakukan?
sumber
jQuery 1.5 menambahkan "Objek yang Ditunda". Apa itu, dan apa sebenarnya yang mereka lakukan?
Objek yang Ditunda
Mulai jQuery 1.5, objek Deferred menyediakan cara untuk mendaftarkan beberapa callback ke antrean callback yang dikelola sendiri, memanggil antrean callback yang sesuai, dan menyampaikan status keberhasilan atau kegagalan fungsi sinkron atau asinkron.
Metode yang Ditangguhkan:
Ditunda Dalam Tindakan:
$.get("test.php").done(
function(){ alert("$.get succeeded"); }
);
$.get("test.php")
.done(function(){ alert("$.get succeeded"); })
.fail(function(){ alert("$.get failed!"); });
Dan tampaknya callback metode ajax () yang ada bisa dirantai daripada dideklarasikan di pengaturan:
var jqxhr = $.ajax({ url: "example.php" })
.success(function() { alert("success"); })
.error(function() { alert("error"); })
.complete(function() { alert("complete"); });
Contoh Kerja Dari entri blog Eric Hynds : http://jsfiddle.net/ehynds/Mrqf8/
jqXHR
Mulai jQuery 1.5, metode $ .ajax () mengembalikan objek jXHR, yang merupakan superset dari objek XMLHTTPRequest. Untuk informasi selengkapnya, lihat bagian jXHR dari entri $ .ajax
Dari JQUERY 1.5 RELEASED :
BENDA TERTENTU
Bersamaan dengan penulisan ulang modul Ajax, fitur baru diperkenalkan yang juga tersedia untuk umum: Deferred Objects . API ini memungkinkan Anda untuk bekerja dengan nilai kembalian yang mungkin tidak langsung ada (seperti hasil kembalian dari permintaan Ajax asinkron). Selain itu, ini memberi Anda kemampuan untuk melampirkan beberapa penangan kejadian (sesuatu yang sebelumnya tidak mungkin dilakukan di Ajax API).
Selain itu, Anda dapat membuat objek yang ditangguhkan sendiri menggunakan jQuery.Deferred. Informasi selengkapnya tentang API ini dapat ditemukan di dokumentasi Objek Ditangguhkan .
Eric Hynds telah menulis tutorial yang bagus tentang Menggunakan Deferreds di jQuery 1.5 .
Daripada memberi tahu Anda apa yang dilakukannya, saya akan menunjukkan kepada Anda apa yang dilakukannya dan menjelaskannya.
Salinan sumber terkait jQuery 1.5 dengan penjelasan yang menjelaskan apa yang dilakukannya. Saya pikir sebagian besar komentarnya benar.
Ini mungkin bermanfaat
sumber
Problem solved
. Btw itu sumber 1.5beta saya pikir ada beberapa perubahan di 1.6Koreksi saya jika saya salah, tetapi baru-baru ini diklik untuk saya bahwa itu pada dasarnya adalah Pelari Tugas Asinkron. Janji adalah kontrak hasil, memastikan Anda menerima ... sesuatu, tetapi tanpa jaminan kapan Anda akan mendapatkannya.
sumber
Saat bekerja di Javascript, kami menghadapi situasi di mana pemanggilan fungsi tidak sinkron. Itu adalah aliran fungsi calee (katakanlah X) tidak menunggu fungsi asynchronous yang disebut (Katakanlah Y). Contoh umumnya adalah ketika kita melakukan panggilan ke server untuk mengambil beberapa data dari database atau halaman HTML. Jika panggilan itu tidak asinkron, antarmuka pengguna akan macet menunggu server merespons. Sifat asynchronous ini menyebabkan masalah ketika Anda ingin mengeksekusi sesuatu secara berurutan, misalnya, Anda ingin mencetak sesuatu setelah Y (asynch) selesai mengeksekusi atau selesai mengambil data. Di sini jQuery memberi kita Deffered Object. Pada dasarnya, jQuery telah menangani semua kode boilerplate yang biasanya kami tulis untuk mengatasi situasi ini. Berikut ini contoh sederhananya:
Anda dapat menulis fungsi deferred (asynch) Anda sendiri
Saya harap ini membantu.
sumber