ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript のオブジェクトである Promise はどのようにプリミティブな値を保持するのでしょうか?

JavaScript のオブジェクトである Promise はどのようにプリミティブな値を保持するのでしょうか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-25 09:57:14752ブラウズ

How Do Promises, Objects in JavaScript, Hold Primitive Values?

Promise の値へのアクセス

Promise は、JavaScript の非同期操作によく使用されます。 Promise を操作するための重要なメソッドの 1 つは、.then() メソッドです。このメソッドを使用すると、複数の Promise をチェーンし、後続の Promise で前の Promise の値にアクセスできます。

次の Angular の例を考えてみましょう:

promiseB = promiseA.then(function(result) {
  return result + 1;
});

この例では、promiseB を新しい Promise として定義します。これは、promiseA が解決された直後に解決されます。 Angular のドキュメントによると、「その値は、promiseA を 1 増分した結果になります。」

疑問が生じます。Object 型の Promise オブジェクトは、どのようにして数値のようなプリミティブ値を保持できるのでしょうか?

答えは、.then() メソッドのセマンティクスにあります。 .then() に提供される成功コールバック関数は、新しい Promise の値となる新しい値を返します。この場合、成功コールバック関数は結果 1 を返します。これにより、結果の値がインクリメントされ、promiseB の値として返されます。

promiseB の値にアクセスするには、別の .then() メソッドをチェーンして、成功コールバック関数を提供します:

promiseB.then(function(result) {
  // Use the result of promiseB here
});

このコールバックでは、前回の値から増分された結果の値にアクセスできます。 promise.

ES7 (2016) では async/await 構文が導入され、Promise を処理する別の方法が提供されました。 await を使用すると、Promise の値を直接アンラップできるため、複数の .then() メソッドをチェーンする必要がなくなります。例:

async function doSomething() {
  let result = await functionThatReturnsPromiseA();
  return result + 1;
}

この例では、await キーワードが非同期関数で使用されています。 await キーワードは、functionThatReturnsPromiseA() が解決されるまで関数の実行を一時停止します。 Promise が解決されると、Promise の値が結果変数に割り当てられ、関数は実行を継続します。

以上がJavaScript のオブジェクトである Promise はどのようにプリミティブな値を保持するのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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