ホームページ >ウェブフロントエンド >jsチュートリアル >非同期 JavaScript で Promise 解決を効果的に処理するにはどうすればよいですか?

非同期 JavaScript で Promise 解決を効果的に処理するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-23 11:47:33804ブラウズ

How Can I Effectively Handle Promise Resolutions in Asynchronous JavaScript?

Promise と非同期実行

非同期関数は、タスクを同時に実行し、操作の結果を表す Promise を返すことでノンブロッキング処理を可能にします。ただし、適切な処理を行わずに実行すると、非同期関数は Promise { を生成する可能性があります。

提供されたコード スニペットでは、AuthUser 関数は google.login 関数の結果を表す Promise を返します。ただし、その後の userToken = AuthUser(data) での AuthUser の呼び出しでは、解決の処理にコールバックが使用されないため、未解決の Promise が生成されます。

Promise 解決の処理

Promise の結果をキャプチャするには、 .then または .catch メソッドを Promise に添付する必要があります。これらのメソッドを使用すると、Promise の解決または拒否をそれぞれ処理できます。

次の変更により、コールバック内の userToken Promise の値がキャプチャされます。

let userToken = AuthUser(data);
userToken.then(function(result) {
   console.log(result); // "Some User token"
});

Promise 解決の動作について

Promise は本質的に前向きです。解決されると、Promise の現在の状態に関係なく、結果は .then または .catch ハンドラーに渡されます。次の .then ハンドラーは、前の .then で返された連鎖 Promise の解決された値を常に受け​​取ります。

Promise Resolution 詳細

  1. .then 関数によって返される値は、その Promise の解決された値。
  2. .then 関数が Promise を返す場合、その連鎖された Promise の解決された値が以下に続きます。

デモの例

  1. 戻り値:

    initPromise()
      .then(function(result) {
     console.log(result); // "initResolve"
     return "normalReturn";
      })
      .then(function(result) {
     console.log(result); // "normalReturn"
      });
  2. Promiseチェーン:

    initPromise()
      .then(function(result) {
     console.log(result); // "initResolve"
     return new Promise(function(resolve, reject) {
        setTimeout(function() {
           resolve("secondPromise");
        }, 1000)
     })
      })
      .then(function(result) {
     console.log(result); // "secondPromise"
      });

これらの原則に従うことで、非同期操作を効果的に処理し、その解決された値を取得できます。

以上が非同期 JavaScript で Promise 解決を効果的に処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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