ホームページ > ウェブフロントエンド > jsチュートリアル > ネットワークリクエストに対して NodeJS でネストされた Promise を効率化するにはどうすればよいですか?

ネットワークリクエストに対して NodeJS でネストされた Promise を効率化するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-07 20:23:13
オリジナル
622 人が閲覧しました

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

ネストされた Promise の削除

NodeJS を使用してネットワーク リクエストと Promise を操作する場合、ネストされた Promise が発生する可能性があります。これは本質的に間違っているわけではありませんが、フローをより合理化するには、これらの Promise を連鎖させる必要がある場合があります。

提供されたコード スニペットは、複数のネストされた Promise を使用して 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);
                        });
                });
        });
};
ログイン後にコピー

これらの 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);
      });
};
ログイン後にコピー

このアプローチの鍵は次のとおりです。各 then コールバックからの新しい Promise を return します:

.then(function(response) {
    return nextPromise;
})
ログイン後にコピー

これにより、Promise チェーンが継続し、「内部」Promise の値で解決されることが保証されます。これらの約束を連鎖させることで、より読みやすく保守しやすいコードベースを作成できます。

以上がネットワークリクエストに対して NodeJS でネストされた Promise を効率化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート