私は知っています、私は知っています、それは良いデザインではありません。ノンブロッキングの setTimeout または setInterval はより良いアプローチですが、ノンブロッキングを実装するには、私のシナリオでコールバック ポイントを持つようにコード全体をリファクタリングする必要があります。説明させてください:
- キャッシュ (ストレージ) からオブジェクトをフェッチすることを目的とした関数があります
- オブジェクトが利用可能な場合、私はそれを取ります
- オブジェクトが利用できない場合は、それを要求し、有効期限カウンター/時間でポーリングして利用可能になるまで待ちます。ある時点で(それほど遠くない)利用可能になり、発信者に戻ります
コールチェーン (スタック) が非常に深く複雑であり、すべてのコードをリファクタリングして非同期コールバックなどを使用することは不可能であるため、コールバックを実装できません。この特定のケースでは、単一のスレッド化されたブロッキング ループが本当に必要です。
ここで質問が来ます:
カウンターで単純な for ループを使用したいだけではありません。これにより、CPU サイクルが過度に消費され、コンピューターのファンが (たとえ数秒間であっても) 起動します。次のようなブロッキング アプローチとして使用できる、最も遅い JavaScript コマンド (またはコマンドのセット) を探しています。
while ( needToContinue ) {
slowestCommandOrFunction();
needToContinue = checkIfNeedToContinue();
}