JavaScript の setTimeout に精度がない理由
JavaScript の setTimeout 関数は、指定された遅延の後にコードを実行することを目的としています。ただし、実際に発生する遅延は、特にコンピュータ間で異なる場合があります。
精度を制限する要因
Mozilla Developer Network (MDN) によると、setTimeout は直後には実行されない場合があります。次のような要因によって予想される遅延:
ブラウザ実装の違い
ブラウザが異なれば setTimeout の実装方法も異なります。テストでは、Chrome と Firefox では setTimeout の実行の処理方法が若干異なることが示されています。
<code class="python">setTimeout(function() { console.log(Date.now() - date); }, 1000); Browser | Test1 | Test2 | Test3 | Test4 -------- | ------ | ------ | ------ | ------ Chrome | 998 | 1014 | 998 | 998 Firefox | 1000 | 1001 | 1047 | 1000</code>
日付型の制限
予想される時刻と時刻の間の時間差を測定するために使用される Date オブジェクト実際の実行時間自体には多少の不正確性がある可能性があります。
結論
setTimeout は遅延実行をスケジュールする便利な方法を提供しますが、要因により正確なタイミングを意図したものではありません。前述した。開発者は、より正確なタイミング要件を実現するために、requestAnimationFrame や Tock などの外部ライブラリを使用するなどの代替ソリューションを検討する必要があります。
以上がJavaScript で setTimeout が正確でないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。