Rumah > Artikel > hujung hadapan web > Perbezaan antara Ditunda dan janji dalam jQuery_jquery
Apakah perbezaan antara Tertunda dan Janji?
janji
Janji ialah objek yang dikembalikan oleh fungsi tak segerak. Apabila anda ingin menulis fungsi sedemikian sendiri anda perlu menggunakan tertunda.
var promise = $.ajax({ url: "/myServerScript" }); promise.done(mySuccessFunction); promise.fail(myErrorFunction); var promise = $.ajax({ url: "/myServerScript" }); promise.then(mySuccessFunction,myErrorFunction);
Kebaikan menggunakan Promises adalah seperti berikut:
Anda boleh memanggil fungsi done() dan fail() beberapa kali dan menggunakan fungsi panggil balik yang berbeza. Mungkin anda mempunyai satu fungsi panggil balik untuk menghentikan animasi, satu untuk memulakan permintaan AJAX baharu dan satu untuk memaparkan data yang diterima kepada pengguna.
var promise = $.ajax({ url: "/myServerScript" }); promise.done(myStopAnimationFunction); promise.done(myOtherAjaxFunction); promise.done(myShowInfoFunction); promise.fail(myErrorFunction);
Walaupun selepas panggilan AJAX selesai, anda masih boleh memanggil fungsi done() dan fail(), dan fungsi panggil balik boleh dilaksanakan serta-merta. Tiada kekeliruan pembolehubah antara negeri yang berbeza. Apabila panggilan AJAX tamat, ia mengekalkan status kejayaan atau kegagalan dan status ini tidak berubah.
Anda boleh menggabungkan janji. Kadangkala anda perlu membuat dua permintaan AJAX pada masa yang sama dan ingin memanggil fungsi apabila kedua-dua permintaan AJAX berjaya. Untuk melaksanakan tugas ini, anda perlu menggunakan fungsi $.when() baharu:
var promise1 = $.ajax("/myServerScript1"); var promise2 = $.ajax("/myServerScript2"); $.when(promise1, promise2).done(function(xhrObject1, xhrObject2) { // 处理两个XHR对象 });
ditunda
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.
Objek tertunda boleh melakukan perkara yang sama seperti objek janji, tetapi ia mempunyai dua fungsi untuk mencetuskan fungsi done() dan fail().
Objek tertunda mempunyai fungsi resolve() untuk mengendalikan hasil yang berjaya dan melaksanakan fungsi yang berkaitan dengan done(). Fungsi reject() digunakan untuk mengendalikan keputusan yang gagal dan melaksanakan fungsi yang berkaitan dengan fail().
Anda boleh menyediakan parameter untuk kedua-dua fungsi resolve() dan reject(), dan kemudian kedua-duanya akan dihantar ke fungsi panggil balik yang berkaitan dengan done() dan fail().
Ringkasan
Ajax jQuery adalah untuk mengembalikan objek janji, yang mengandungi kaedah done(), fail() tertunda ialah proses mengembalikan objek janji ini.