ホームページ >ウェブフロントエンド >jsチュートリアル >再帰的な `setTimeout` と `setInterval`: 正確なタイミングにはどちらが適していますか?
再帰的 setTimeout と setInterval: 違いを理解する
再帰的 setTimeout と setInterval はどちらも指定された間隔で関数を実行することを目的としていますが、 2 つの間の微妙だが重要な違い
Recursive setTimeout
提供されたコード (オプション A) に示されているように、再帰的 setTimeout は、myTimeoutFunction 関数の実行を 1000 ミリ秒間隔でスケジュールします。 myTimeoutFunction が実行されると、setTimeout を使用してそれ自体が呼び出され、そのサイクルが無限に繰り返されます。
setInterval
対照的に、setInterval (オプション B) は定期的に myTimeoutFunction の実行をスケジュールします。再帰呼び出しを使用せずに間隔を設定します。代わりに、定期的な実行を保証する組み込みメカニズムが採用されています。
精度に関する考慮事項
2 つのアプローチの主な違いは、それぞれの精度にあります。 setInterval は、前回の実行時間に関係なく、関数の実行前に正確に 1000 ミリ秒待機するため、再帰的 setTimeout よりも正確になる傾向があります。一方、
再帰的 setTimeout は、前の呼び出しが完了した後の次の関数呼び出し。 myTimeoutFunction の実行にかなりの時間がかかる場合、この遅延はかなり大きくなる可能性があります。
同時実行性
考慮すべきもう 1 つの要素は同時実行性です。 setInterval とは異なり、再帰的 setTimeout には同時実行性の固有の概念がありません。これは、スケジューラが再度 myTimeoutFunction を呼び出そうとしたときに myTimeoutFunction がまだ実行中の場合、再帰呼び出しは失敗することを意味します。ただし、
setInterval は関数の実行時間とは関係なく実行されます。進行中の処理がある場合でも、関数が指定された間隔で呼び出されることを保証します。
結論
再帰的な setTimeout と setInterval は両方とも異なる目的を果たします。再帰的な setTimeout は柔軟性を提供し、カスタム遅延を可能にしますが、精度が低くなり、同時実行の問題が発生する可能性があります。 setInterval は、一定の間隔で関数を正確かつ一貫して実行する場合により信頼性が高くなりますが、実行タイミングに対する同レベルの制御が欠けています。
以上が再帰的な `setTimeout` と `setInterval`: 正確なタイミングにはどちらが適していますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。