ホームページ > 記事 > ウェブフロントエンド > 非同期 JavaScript 関数は、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 サイトの他の関連記事を参照してください。