ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript で非同期関数を同期的に動作させるにはどうすればよいですか?

JavaScript で非同期関数を同期的に動作させるにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-18 03:31:02
オリジナル
833 人が閲覧しました

How Can I Make Asynchronous Functions Behave Synchronously in JavaScript?

非同期関数の同期呼び出し

一部の特定のシナリオでは、同期コードベース内で非同期呼び出しが同期的に動作するように強制する必要がある場合があります。一般にベスト プラクティスとは考えられていませんが、これを実現する方法は次のとおりです。

ポーリングによるブロック

まず、JavaScript 実行スレッドをブロックせずに純粋にブロックすることに注意することが重要です。 UI をフリーズすることは不可能です。ただし、非同期操作の完了を定期的にチェックすることでブロッキングをシミュレートすることは可能です。

function doSomething() {
  var data;

  function callback(d) {
    data = d;
  }

  myAsynchronousCall(param1, callback);

  // Poll until the data is set by the callback
  while (!data) {
    // Sleep for a short duration to avoid excessive polling
  }

  return data;
}
ログイン後にコピー

このアプローチでは、コールバックが呼び出されるまで呼び出し元の関数を効果的にブロックします。ただし、頻繁にポーリングする必要があるため、非効率的になる可能性があります。

コールバックベースのアプローチ

よりクリーンで効率的な解決策は、元の非同期関数にコールバック関数を渡すことです。 call.

function doSomething(callback) {
  myAsynchronousCall(param1, function(data) {
    callback(data);
  });
}
ログイン後にコピー

変更された doSomething() 関数は、引数としてコールバックを取るようになりました。これは、非同期呼び出しによって返されたデータを使用して呼び出されます。

doSomething(function(data) {
  console.log(data);
});
ログイン後にコピー

このメソッドにより、ブロックや過剰なポーリングを行わずに、同期コード内で非同期呼び出しをシームレスに処理できます。

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

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