ホームページ >ウェブフロントエンド >jsチュートリアル >値を返さずに Promise を連鎖させると、なぜ未定義の値が発生するのでしょうか?
連鎖した 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 サイトの他の関連記事を参照してください。