ホームページ > 記事 > ウェブフロントエンド > Promise Chaining が場合によっては未定義を返すのはなぜですか?
Promise Chaining の .then() によって unknown が返されるのはなぜですか?
Promise Chaining では、.then() は新しい Promise オブジェクトを返します。ただし、.then() コールバックから値または Promise が明示的に返されない場合、結果として得られる Promise は未定義に解決されます。
次のコードを考えてみましょう。
<code class="js">function doStuff(n) { return new Promise((resolve, reject) => { setTimeout(() => { resolve(n * 10); }, Math.floor(Math.random() * 1000)); }) .then(result => { if (result > 100) { console.log(result + " is greater than 100"); } else { console.log(result + " is not greater than 100"); } }); } doStuff(9) .then(data => { console.log(data); // Undefined });</code>
このコードでは、最初の .then() は値を返さないため、最後の .then() ではデータが定義されていません。これを修正するには、最初の .then() を変更して結果値を返すことができます:
<code class="js">function doStuff(n) { return new Promise((resolve, reject) => { setTimeout(() => { resolve(n * 10); }, Math.floor(Math.random() * 1000)); }) .then(result => { if (result > 100) { console.log(result + " is greater than 100"); } else { console.log(result + " is not greater than 100"); } return result; // Return result to avoid undefined }); } doStuff(9) .then(data => { console.log("data is: " + data); // data is no longer undefined });</code>
以上がPromise Chaining が場合によっては未定義を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。