ホームページ  >  記事  >  ウェブフロントエンド  >  非同期 JavaScript 関数は、UI をフリーズせずに同期的に実行できますか?

非同期 JavaScript 関数は、UI をフリーズせずに同期的に実行できますか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-16 18:40:03781ブラウズ

Can Asynchronous JavaScript Functions Be Executed Synchronously Without Freezing the UI?

非同期 JavaScript 関数の同期実行

特定の状況では、UI をフリーズせずに、非同期 JavaScript 関数を同期的に実行する必要がある場合があります。 。これは一般に良い習慣とは考えられていませんが、必要とみなされる特定のケースもあります。

課題

目標は、コールバックが行われるまで関数をブロックすることです。 UI をフリーズせずに呼び出されます。通常、JavaScript をブロックすると UI がフリーズするため、これには課題があります。

考えられる解決策

考えられる解決策の 1 つは、ポーリングを使用してコールバックによって設定されたグローバル変数を確認することです。 。以下に例を示します。

function doSomething() {

  // Callback sets received data to a global variable
  function callBack(d) {
    window.data = d;
  }

  // Start the async
  myAsynchronousCall(param1, callBack);
}

// Start the function
doSomething();

// Clear the global data
window.data = null;

// Poll at an interval until data is found in the global
var intvl = setInterval(function() {
  if (window.data) {
    clearInterval(intvl);
    console.log(data);
  }
}, 100);

このアプローチでは、UI をフリーズさせることなく、コールバックからデータを受信するまで呼び出し側関数をブロックできます。ただし、グローバル変数を使用するように doSomething() 関数を変更できることを前提としています。

ベスト プラクティス

このアプローチは最適ではないと考えられていることに注意することが重要です。解決。理想的には、非同期呼び出しは関数をブロックするのではなく、コールバックまたはプロミスを使用して処理されるべきです。ただし、簡単に変更できない特定のコードベースでは、一時的な回避策として必要になる場合があります。

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

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