Maison > interface Web > js tutoriel > Comment puis-je éviter les promesses imbriquées et améliorer la lisibilité du code dans Node.js ?

Comment puis-je éviter les promesses imbriquées et améliorer la lisibilité du code dans Node.js ?

Linda Hamilton
Libérer: 2024-12-24 18:10:45
original
242 Les gens l'ont consulté

How Can I Avoid Nested Promises and Improve Code Readability in 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);
                    });
            });
    });
};
Copier après la connexion

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);
      });
};
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal