Maison >interface Web >js tutoriel >Comment puis-je éviter les promesses imbriquées et améliorer la lisibilité du code dans Node.js ?
Démêler les promesses imbriquées
Lorsque vous travaillez avec du code réseau dans NodeJS et que vous utilisez des promesses, il est courant de rencontrer des promesses imbriquées. Bien que cette structure puisse parfois être nécessaire, elle peut également conduire à un code encombré et illisible. Une approche plus propre et plus efficace consiste à enchaîner les promesses au lieu de les imbriquer.
Le problème des promesses imbriquées
Considérons l'exemple suivant :
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); }); }); }); };
Cet extrait de code effectue trois requêtes API en série, en utilisant des promesses imbriquées. Bien qu'il fonctionne correctement, il est visuellement encombré et difficile à suivre.
Chaîner les promesses à la place
Pour enchaîner les promesses au lieu de les imbriquer, modifiez les rappels then pour renvoyer le suivant promise :
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); }); };
Maintenant, chaque rappel then renvoie la promesse suivante, les "enchaînant" efficacement ensemble. La valeur résolue de chaque promesse est ensuite disponible comme argument de la suivante puis rappelée dans la séquence.
En adoptant cette technique, vous pouvez améliorer la lisibilité et la maintenabilité de votre code, notamment lorsque vous travaillez avec plusieurs requêtes API. .
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!