ホームページ  >  記事  >  ウェブフロントエンド  >  Chained Promise で未定義の値が発生する原因とその修正方法

Chained Promise で未定義の値が発生する原因とその修正方法

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

What Causes Undefined Values in Chained Promises and How to Fix Them?

連鎖された Promise と未定義の値

この場合、連鎖された .then() は値を返さないか、新しいプロミスを作成しません。約束。 doStuff() で作成された外側の Promise が n * 10 の値で解決されると、後続の .then() が呼び出され、その中の式の結果 (ログ ステートメントと潜在的な return ステートメント) がコンソールに記録されます。ただし、このチェーンされた .then() からは実際の値が返されないため、doStuff でそれにチェーンされた後続の .then() は何も受け取りません。したがって、未定義の値になります。

解決策: 値または Promise を返すfrom .then()

この問題を解決するには、.then() コールバックが値を返すか、値または Promise を返す別の関数呼び出しを返すようにします。この変更された例では:

<code class="js">const doStuff = (n /* `n` is expected to be a positive number */) => {
  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` to pass it to the next `.then()`
      return result;
    });
};

doStuff(9)
  .then((data) => {
    console.log("data is: " + data);
  });</code>

チェーンされた .then() は前の .then() から返された値を受け取るようになり、未定義の問題がなくなりました。出力には、前の .then().

から渡された値が表示されます。

以上がChained Promise で未定義の値が発生する原因とその修正方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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