ホームページ > ウェブフロントエンド > jsチュートリアル > Node.js でネストされた Promise を回避し、コードの可読性を向上するにはどうすればよいですか?

Node.js でネストされた Promise を回避し、コードの可読性を向上するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-24 18:10:45
オリジナル
243 人が閲覧しました

How Can I Avoid Nested Promises and Improve Code Readability in Node.js?

ネストされた Promise を解明する

NodeJS でネットワーク コードを操作し、Promise を利用する場合、ネストされた Promise がよく発生します。この構造は必要な場合もありますが、コードが乱雑で読みにくくなる可能性もあります。よりクリーンで効率的なアプローチは、Promise をネストするのではなく連鎖させることです。

ネストされた Promise の問題

次の例を考えてみましょう:

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 を使用して、3 つの API リクエストを連続して作成します。正しく機能しますが、視覚的に乱雑でわかりにくいです。

代わりに Promise を連鎖させる

Promise をネストする代わりに連鎖させるには、 then コールバックを変更して次のコールバックを返します。 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 を返し、事実上「連鎖」します。一緒に。各 Promise から解決された値は、シーケンス内の次の then コールバックの引数として使用できます。

この手法を採用すると、特に複数の API リクエストを処理する場合に、コードの読みやすさと保守性が向上します。 .

以上がNode.js でネストされた Promise を回避し、コードの可読性を向上するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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