Merungkai Janji Bersarang
Apabila bekerja dengan kod rangkaian dalam NodeJS dan menggunakan janji, adalah perkara biasa untuk menemui janji bersarang. Walaupun struktur ini mungkin diperlukan pada masa-masa tertentu, ia juga boleh membawa kepada kod yang bersepah dan tidak boleh dibaca. Pendekatan yang lebih bersih dan cekap ialah merantai janji dan bukannya bersarang.
Masalah Janji Bersarang
Pertimbangkan contoh berikut:
exports.viewFile = function(req, res) { var fileId = req.params.id; boxContentRequest('files/' + fileId + '/content', req.user.box.accessToken) .then(function(response) { boxViewerRequest('documents', {url: response.request.href}, 'POST') .then(function(response) { boxViewerRequest('sessions', {document_id: response.body.id}, 'POST') .then(function(response) { console.log(response); }); }); }); };
Coretan kod ini membuat tiga permintaan API secara bersiri, menggunakan janji bersarang. Walaupun ia berfungsi dengan betul, ia kelihatan berantakan dan sukar untuk diikuti.
Merangkai Janji Sebaliknya
Untuk merangkai janji dan bukannya bersarang, ubah suai panggilan balik kemudian untuk mengembalikan yang seterusnya janji:
exports.viewFile = function(req, res) { var fileId = req.params.id; boxContentRequest('files/' + fileId + '/content', req.user.box.accessToken) .then(function(response) { return boxViewerRequest('documents', {url: response.request.href}, 'POST'); }) .then(function(response) { return boxViewerRequest('sessions', {document_id: response.body.id}, 'POST'); }) .then(function(response) { console.log(response); }); };
Sekarang, masing-masing kemudian panggil balik mengembalikan janji berikutnya, berkesan "mengikat" mereka bersama-sama. Nilai yang diselesaikan daripada setiap janji kemudiannya tersedia sebagai hujah kepada yang seterusnya kemudian panggil balik dalam urutan.
Dengan menggunakan teknik ini, anda boleh meningkatkan kebolehbacaan dan kebolehselenggaraan kod anda, terutamanya apabila bekerja dengan berbilang permintaan API .
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengelak Janji Bersarang dan Meningkatkan Kebolehbacaan Kod dalam Node.js?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!