Rumah >hujung hadapan web >tutorial js >Bagaimanakah Promise Chaining Dapat Memudahkan Janji Bersarang dalam Operasi Tak Segerak?
Pengenalan
Janji bersarang boleh timbul apabila bekerja dengan operasi tak segerak yang dibina di atas satu sama lain. Dalam kod yang disediakan, fungsi viewFile membuat berbilang permintaan rangkaian menggunakan boxContentRequest dan boxViewerRequest. Permintaan ini pada masa ini berstruktur dalam janji bersarang, menjadikan kod itu sukar untuk dipatuhi.
Janji Rantai
Untuk menghapuskan janji bersarang, kami boleh menggunakan rantaian janji. Teknik ini membolehkan kami menyambungkan berbilang operasi tak segerak secara berurutan, di mana output satu janji menjadi input seterusnya.
Kod Refactored
Kod refactored di bawah mencapai yang dikehendaki chaining:
exports.viewFile = function (req, res) { var fileId = req.params.id; boxContentRequest('files/' + fileId + '/content', req.user.box.accessToken) .then(function (response) { // Return the next promise directly return boxViewerRequest('documents', { url: response.request.href }, 'POST'); }) .then(function (response) { // Return the final promise directly return boxViewerRequest('sessions', { document_id: response.body.id }, 'POST'); }) .then(function (response) { console.log(response); }); };
Penjelasan
Dalam kod yang difaktorkan semula, kami mengembalikan janji seterusnya terus dari setiap panggilan balik. Ini membolehkan kami merantai janji dengan lancar, memastikan aliran pelaksanaan mengikut turutan yang diingini.
Corak Rantai Janji Generik
Corak generik untuk rantaian janji adalah seperti berikut :
// Option 1: Single-line syntax somePromise .then((r1) => nextPromise) .then((r2) => anyValue); // Option 2: Multi-line syntax somePromise .then(function (r1) { return nextPromise; }) .then(function (r2) { return anyValue; });
Kedua-dua pilihan akan menyelesaikan janji muktamad dengan nilai anyValue. Corak ini menyediakan cara ringkas dan elegan untuk menyambungkan operasi tak segerak, memudahkan struktur kod dan meningkatkan kebolehbacaan.
Atas ialah kandungan terperinci Bagaimanakah Promise Chaining Dapat Memudahkan Janji Bersarang dalam Operasi Tak Segerak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!