非同期関数の同期呼び出し
一部の特定のシナリオでは、同期コードベース内で非同期呼び出しが同期的に動作するように強制する必要がある場合があります。一般にベスト プラクティスとは考えられていませんが、これを実現する方法は次のとおりです。
ポーリングによるブロック
まず、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 サイトの他の関連記事を参照してください。