Bagaimanakah anda boleh merantai tiga panggilan tak segerak dalam jQuery menggunakan Janji, menghantar data dari satu panggilan ke panggilan seterusnya?

DDD
Lepaskan: 2024-11-01 13:56:29
asal
151 orang telah melayarinya

How can you chain three asynchronous calls in jQuery using Promises, passing data from one call to the next?

Merangkai Tiga Panggilan Asynchronous dengan jQuery Promises

Dalam soalan ini, kami meneroka senario di mana anda mempunyai tiga permintaan HTTP tak segerak untuk dibuat dalam secara segerak dan anda perlu menghantar data dari satu panggilan ke panggilan seterusnya.

Pendekatan Awal:

Seperti yang dinyatakan dalam soalan, anda cuba menggunakan penangguhan untuk dua fungsi pertama. Ini adalah permulaan yang baik, tetapi ia hanya meliputi kes dua fungsi. Melanjutkannya kepada tiga fungsi memerlukan pendekatan yang sedikit berbeza.

Merantai dengan Objek JqXHR:

Kunci untuk merantai berbilang panggilan tak segerak ialah mengembalikan objek jqXHR yang dikembalikan sebanyak $ .ajax() dalam setiap fungsi. Objek ini serasi dengan Promise dan boleh dirantai menggunakan .then()/.done()/.fail()/.always().

Kod Kemas Kini:

function first() {
   return $.ajax(...);
}

function second(data, textStatus, jqXHR) {
   return $.ajax(...);
}

function third(data, textStatus, jqXHR) {
   return $.ajax(...);
}

function main() {
    first().then(second).then(third);
}
Salin selepas log masuk

Dalam kod yang dikemas kini ini, fungsi first() mengembalikan objek jqXHR daripada panggilan AJAXnya, yang kemudiannya dihantar sebagai hujah kepada fungsi second(). Fungsi kedua() pula, mengembalikan objek jqXHRnya, yang dihantar ke fungsi ketiga().

Melalui Data Antara Fungsi:

Data argumen , textStatus dan jqXHR timbul daripada panggilan $.ajax() dalam fungsi sebelumnya. Ini bermakna first() suapan second(), dan second() suapan third(). Oleh itu, anda boleh menggunakan hujah ini untuk menghantar data daripada satu fungsi ke fungsi seterusnya.

Demo:

Kod di bawah menunjukkan rantaian tiga panggilan tak segerak menggunakan janji jQuery . Ia menggunakan $.when('foo') untuk menyampaikan janji yang ditepati sebagai ganti $.ajax(...).

function first() {
   return $.when('foo');
}

function second(data) {
   return $.when('bar' + data);
}

function third(data) {
   return $.when('baz' + data);
}

first().then(second).then(third)
  .done(function(data) {
     console.log(data); // Logs "bazbarfoo"
  });
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah anda boleh merantai tiga panggilan tak segerak dalam jQuery menggunakan Janji, menghantar data dari satu panggilan ke panggilan seterusnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!