Merangkai Panggilan Asynchronous dengan jQuery Promises
Pengaturcaraan tak segerak dalam JavaScript membenarkan kod untuk dilaksanakan tanpa menyekat antara muka pengguna. Untuk mencapai matlamat ini, janji sering digunakan untuk mengurus aliran data dan memastikan bahawa tugasan dilaksanakan dalam susunan tertentu.
Dalam senario yang diberikan, anda menyasarkan untuk melaksanakan tiga panggilan HTTP tak segerak mengikut turutan. Anda telah menyediakan penyelesaian separa yang melibatkan dua fungsi dengan janji tertunda. Untuk melanjutkannya kepada tiga fungsi, mari kita mendalami konsep teras.
Dalam setiap fungsi yang memulakan permintaan tak segerak, kembalikan objek jqXHR yang dikembalikan oleh $.ajax(). Objek jqXHR ini serasi dengan Promise, yang bermaksud ia boleh dirantai dengan mudah menggunakan .then(), .done(), .fail(), atau .always().
Dalam kes ini, .then( ) adalah yang paling sesuai kerana ia membolehkan anda menyambungkan tiga panggilan dan menghantar data dari satu ke yang lain. Contoh kod berikut menggambarkan penyelesaian lengkap:
<code class="javascript">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); }</code>
Data argumen, textStatus dan jqXHR dihantar ke setiap fungsi berikutnya daripada panggilan $.ajax() panggilan sebelumnya. Ini membolehkan anda menghantar data dari first() ke second(), dan dari second() ke third(), memastikan bahawa panggilan dilaksanakan secara serentak dan data mengalir dengan lancar antara mereka.
Anda juga boleh menggunakan fungsi pembantu seperti $.when('foo') untuk menyampaikan janji yang ditepati sebagai ganti $.ajax(...) semasa ujian atau semasa membangunkan penyelesaian anda.
Atas ialah kandungan terperinci Bagaimanakah saya boleh melaksanakan tiga panggilan HTTP tak segerak secara berurutan menggunakan Janji jQuery?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!