Mengurus Panggilan Balik Tak Segerak dengan Corak Janji
Memandangkan satu set panggilan balik tak segerak, selalunya perlu menangguhkan pelaksanaan sehingga semua panggilan balik selesai. Senario ini timbul dalam situasi di mana data perlu dikumpul atau diproses secara kolektif merentas berbilang operasi tak segerak.
Pendekatan Pengiraan Manual
Satu pendekatan melibatkan penjejakan secara manual status penyiapan setiap panggil balik. Tatasusunan, selesai, dimulakan dengan nilai boolean yang mewakili keadaan penyiapan setiap panggilan balik. Apabila setiap panggilan balik dipanggil, elemen yang sepadan dalam selesai ditetapkan kepada benar. Gelung sementara kemudian digunakan untuk menyemak secara berterusan sama ada semua elemen yang dilakukan ditetapkan kepada benar. Setelah selesai, pemprosesan yang diingini boleh dilaksanakan.
Menggunakan Janji jQuery
Dalam jQuery, $.ajax() mengembalikan janji, yang mewakili penyiapan akhirnya sesuatu permintaan tak segerak. Memanfaatkan janji, pendekatan yang lebih elegan boleh digunakan:
Janji Standard ES6
Pelayar moden dan Persekitaran node.js menyokong janji asli. Jika tersedia, anda boleh menggunakan fungsi Promise.all:
Polyfilling Promises
Dalam persekitaran lama tanpa sokongan janji asli, anda boleh menggunakan perpustakaan seperti BabelJS atau polyfill janji untuk mencontohi fungsi janji.
Batching Non-Promise Operasi
Jika operasi tak segerak anda tidak mengembalikan janji, anda boleh "menjanjikan" dengan membungkusnya dalam fungsi yang mengembalikan janji dan menyelesaikannya dengan keputusan atau menolaknya dengan sebarang ralat. Fungsi yang dijanjikan kemudiannya boleh digunakan bersama dengan janji seperti yang diterangkan di atas.
Perpustakaan Janji Pihak Ketiga
Perpustakaan seperti Bluebird menyediakan fungsi utiliti tambahan untuk mengurus operasi tak segerak. Contohnya, Promise.map boleh digunakan untuk menggunakan operasi tak segerak pada setiap elemen dalam tatasusunan, mengembalikan janji tunggal yang menyelesaikan kepada tatasusunan semua hasil.
Atas ialah kandungan terperinci Bagaimanakah Anda Boleh Mengurus Panggilan Balik Asynchronous dengan Cekap dengan Corak Janji?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!