ホームページ >ウェブフロントエンド >jsチュートリアル >プロミスチェーンに「.then(function(a){ return a; })」は必要ですか?

プロミスチェーンに「.then(function(a){ return a; })」は必要ですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-16 00:08:02567ブラウズ

Is

Promise の連鎖: ".then(function(a){ return a; })" を理解する

Promise チェーンを使用する場合、 「.then(function(a){ return a; })」のようなステートメントがよく見られます。この構文はコードに表示されます:

var getEvents = function(participantId) {  
  return new models.Participant()
    .query({where: {id: participantId}})
    .fetch({withRelated: ['events'], require: true})
    .then(function(model) {
      return model;
    });
};

疑問が生じます:この関数は、追加の ".then()" なしで fetch() を直接返すのと機能的に同じですか?

答え: ノーオペ

はい。 「.then(function(a){ return a; })」は事実上、Promise のノーオペレーション (no-op) です。同じ Promise を返し、同じように動作し、同等に呼び出すことができます。

理由:

Promise は、非同期操作を表すために使用されます。 Promise が解決されると、その結果が「then」関数を介してチェーン内の次の Promise に渡されます。ただし、「then」関数が単に入力を返す場合、チェーンに値は追加されません。

作成者がこの関数を使用した理由:

一見冗長に見える「.then()」が含まれているのは、次の 2 つのうちのいずれかに起因する可能性があります。理由:

  • 失策: 作成者が単に間違いを犯したか、約束の目的を誤解した可能性があります。
  • 理解力の欠如: 作成者は、たとえ実際にそうでなかったとしても、すべての Promise には「then」関数が必要であると誤って信じていた可能性があります。

最後の行:

ほとんどの場合、「.then(function(a){ return a; })」は不要であり、目的の動作に影響を与えることなく省略できます。これは何の目的も持たないプレースホルダーなので、コードをわかりやすくするために削除する必要があります。

以上がプロミスチェーンに「.then(function(a){ return a; })」は必要ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。