Maison > interface Web > js tutoriel > Comment puis-je rationaliser les promesses imbriquées dans NodeJS pour les requêtes réseau ?

Comment puis-je rationaliser les promesses imbriquées dans NodeJS pour les requêtes réseau ?

Patricia Arquette
Libérer: 2024-12-07 20:23:13
original
622 Les gens l'ont consulté

How Can I Streamline Nested Promises in NodeJS for Network Requests?

Suppression des promesses imbriquées

Lorsque vous travaillez avec des requêtes et des promesses réseau à l'aide de NodeJS, il est possible de rencontrer des promesses imbriquées. Bien que cela ne soit pas faux en soi, il faudra peut-être enchaîner ces promesses pour un flux plus rationalisé.

L'extrait de code fourni illustre un scénario dans lequel plusieurs promesses imbriquées sont utilisées pour effectuer des appels d'API :

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

Pour enchaîner ces promesses, une simple modification s'impose :

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

La clé de cette approche est de renvoyer la nouvelle promesse de chacun puis rappeler :

.then(function(response) {
    return nextPromise;
})
Copier après la connexion

Cela garantit que la chaîne de promesses continue et se résout avec la valeur de la promesse "intérieure". En enchaînant ces promesses, vous pouvez créer une base de code plus lisible et maintenable.

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