ホームページ > ウェブフロントエンド > jsチュートリアル > 非同期 JavaScript 関数を強制的に同期的に実行できますか?

非同期 JavaScript 関数を強制的に同期的に実行できますか?

DDD
リリース: 2024-12-03 03:24:10
オリジナル
684 人が閲覧しました

Can Asynchronous JavaScript Functions Be Forced to Execute Synchronously?

非同期 Javascript 関数は同期的に呼び出すことができますか?

JavaScript では非同期プログラミングが一般的ですが、特定のシナリオでは既存の同期関数の同期関数呼び出しが必要になる場合があります。コードベース。このアプローチの性質が最適ではないことは認識していますが、時間の制約により、非同期呼び出しをより大きな同期コードベースに組み込む必要がある場合があります。

コールバック関数のブロック

課題非同期関数からのコールバックが受信されるまで呼び出し関数の実行をブロックすることにあります。主な考慮事項は次のとおりです。

  • UI のブロックの不可能性: Javascript ランタイムをブロックすると、必然的に UI エクスペリエンスがフリーズします。
  • グローバル変数のポーリング: 別のアプローチには、呼び出し側関数内のコールバックによって設定されたグローバル変数をポーリングすることが含まれます。これは、グローバル変数が設定されるまで繰り返しチェックするインターバル タイマーを使用して実現できます。

実装例:

function doSomething() {
  var data;

  function callBack(d) {
    window.data = d;
  }

  myAsynchronousCall(param1, callBack);

  // Start polling
  var intvl = setInterval(function() {
    if (window.data) {
      clearInterval(intvl);
      console.log(data);
    }
  }, 100);
}
ログイン後にコピー

のリファクタリング非同期コンプライアンス:

ただし、理想的なアプローチは、呼び出し元の関数を変更し、非同期操作を処理するコールバックを渡すことであることに注意してください。これにより、同期コードベースの機能を犠牲にすることなく、非同期の整合性が維持されます。

function doSomething(func) {
  function callBack(d) {
    func(d);
  }

  myAsynchronousCall(param1, callBack);
}

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

以上が非同期 JavaScript 関数を強制的に同期的に実行できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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