JavaScript で Async/Await を使用してコールバックの実行を一時停止する方法

Susan Sarandon
リリース: 2024-10-29 14:16:02
オリジナル
494 人が閲覧しました

How to Use Async/Await to Pause Execution for Callbacks in JavaScript?

Async/Await を使用してコールバックの実行を一時停止する

コールバックを処理する場合、コールバックが終了するまで関数の実行を一時停止することが望ましい場合があります。値を返しました。同期プログラミングでは、これは join() などのブロッキング メカニズムを使用して実現できます。ただし、非同期プログラミングでは、これは多くの場合望ましくありません。

確実に 1 回呼び出されるコールバック関数があり、async/await を使用するように次の関数を変更するとします。

test() {
  api.on( 'someEvent', function( response ) {
    return response;
  });
}
ログイン後にコピー

目標は、次のようにコールバックの実行を待機する非同期関数に変換することです:

async test() {
  return await api.on( 'someEvent' );
}
ログイン後にコピー

API によって返される Promise が必要なため、Async/await だけではこれを達成できません。 。の上()。これを解決するには、Promise を返す関数でコールバックをラップします。

function apiOn(event) {
  return new Promise(resolve => {
    api.on(event, response => resolve(response));
  });
}
ログイン後にコピー

次に、test() を非同期関数として書き換えます。

async function test() {
  return await apiOn( 'someEvent' ); // await is optional here (returns a Promise)
}
ログイン後にコピー

async であることに注意してください。関数はそれ自体も Promise を返します。 test() から実際の結果を取得するには、外部の非同期関数で待機する必要があります。

async function whatever() {
  const response = await test();
  // use response here
}
ログイン後にコピー

Promise ラッピング関数を活用することで、async/await を使用して、関数の実行を効果的に一時停止できます。コールバックが値を返すまで test() を実行します。

以上がJavaScript で Async/Await を使用してコールバックの実行を一時停止する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート