「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > .then(function(a){ return a; }) は Promise に対して No-Op ですか?

.then(function(a){ return a; }) は Promise に対して No-Op ですか?

2024 年 11 月 16 日に公開
ブラウズ:340

Is .then(function(a){ return a; }) a No-Op for Promises?

.then(function(a){ return a; }) は Promise に対する No-Op ですか?

Promise の領域.then(function(a){ return a; }) がノーオペレーションであるかどうかという問題が生じています。この興味深いクエリに光を当ててみましょう:

はい、通常は何も操作しません。

問題のコードは、前の Promise の戻り値を受け取ります。 .then() に渡される関数を介してチェーンします。ただし、その関数が入力 a を返すだけの場合、Promise の結果の処理や変換は事実上バイパスされます。これにより、Promise パイプラインでは無害ですが不必要な追加ステップになります。

なぜそのように書かれたのですか?

おそらくタイプミスか、以前の誤解の名残です。約束。 Promise が導入されたとき、一部の開発者は、チェーンを継続するには .then() が Promise を返す必要があると誤って信じていました。その結果、入力と同一であっても戻り値が常に Promise のままであることを保証するために、この余分な .then() 呼び出しが追加されました。

Returning .then() と Returning の違いIt の省略

意味的には同等ですが、.then() を返すことと省略することには微妙な違いがありますit:

  • New Promise インスタンス: .then() は新しい Promise インスタンスを作成しますが、省略すると元の Promise インスタンスが再利用されます。ただし、この区別は通常は無関係です。
  • Thenable-ness check: .then() を使用すると、戻り値がチェックされて、それが Promise であるかどうかが判断されます。 .then() を省略すると、このチェックがスキップされます。

エッジケース

まれに、.then(function(a){ return a; }) が発生する場合があります。異常な動作がある:

  • フルフィルメント後に戻り値が突然 Promise になった場合、 .then() は待機します。 it.
  • これは、共有の回避に役立つ可能性がある個別の Promise オブジェクトを返します。ただし、これはニッチな使用例です。

結論

一般に、 .then(function(a){ return a; }) はノーです。 -op は、Promise チェーンに値を追加しません。共有 Promise の回避や、あいまいな thenable 関連の動作の処理など、使用するやむを得ない理由がない限り、省略する必要があります。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3