ホームページ >ウェブフロントエンド >jsチュートリアル >値を返さずに Promise を連鎖させると、なぜ未定義の値が発生するのでしょうか?

値を返さずに Promise を連鎖させると、なぜ未定義の値が発生するのでしょうか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-19 22:13:29713ブラウズ

Why Do Promises Chain Without Returning a Value Result in Undefined Values?

連鎖した Promise の未定義値を理解する

JavaScript では、Promise は非同期操作に使用されます。これらは、計算の結果を処理し、成功や失敗などのシナリオを処理する方法を提供します。ただし、Promise をチェーンするときに、予期しない値の未定義が発生することがあります。

根本原因: 値を返さないチェーン

Promise は、.then() メソッドを使用してチェーンされます。 Promise が解決または拒否されると、.then() メソッドは新しい Promise オブジェクトを返します。ただし、.then() メソッドから値が明示的に返されない場合、または Promise が明示的に返されない場合、新しい Promise オブジェクトはデフォルト値 unknown で解決されます。

例:

<code class="javascript">doStuff(9)
  .then(function(result) {
    // No value or Promise returned
    if (result > 100) {
      console.log(result + " is greater than 100");
    } else {
      console.log(result + " is not greater than 100");
    }
  })
  .then(function(data) {
    console.log(data); // Output: undefined
  });</code>

この例では、最初の .then() メソッドは値を返しません。その結果、2 番目の .then() メソッドは引数として未定義を受け取り、コンソールに出力されます。

解決策: 値または Promise を返す

連鎖した Promise での未定義の値を回避するには、値または値を返す Promise を .then() メソッドから明示的に返す必要があります。

例:

<code class="javascript">doStuff(9)
  .then(function(result) {
    if (result > 100) {
      console.log(result + " is greater than 100");
    } else {
      console.log(result + " is not greater than 100");
    }
    // Return the result to avoid undefined at the next .then()
    return result;
  })
  .then(function(data) {
    console.log("data is: " + data); // Output: "data is: 90"
  });</code>
結果を返すことにより、2 番目の .then() メソッドは未定義ではなく実際の結果値を受け取ります。

以上が値を返さずに Promise を連鎖させると、なぜ未定義の値が発生するのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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