2

JavaScript のsetInterval()メソッドに関連して 2 つの質問があります。これらの質問に関連する実際的なケースは見つかりませんでしたが(不可能ではないと思いますが)、好奇心のためにこれらの質問をしたかったのです。

1.) によって実行されるコードが、指定されたsetInterval()時間間隔よりも長くかかる場合はどうなりますか? 前の実行が停止し、現在の実行が開始されるか、または両方が並行して実行されますか。

2.) が呼び出されたときに、システム (OS) 全体が時間ギャップの間にハングアップした場合はどうなりsetInterval()ますか? この状態でコードが異なる間隔で実行される可能性はありますか? setInterval()コードが指定された間隔でのみ実行されることを保証しますか? ありがとう

4

2 に答える 2

5
  1. JavaScript はシングル スレッド実行を使用します。setTimeoutやなどの関数setIntervalは、JavaScript でマルチスレッドが可能であると多くの人に信じ込ませます。実際にはsetIntervalsetTimeout関数または式を指定された時間に実行するようにスケジュールするだけで、それらの関数は同じシングルスレッド スタックに追加されます。setTimeoutまたはの起動setIntervalがスケジュールされているときにブラウザが何か他の処理を行っている場合、スケジュールされた関数は、ブラウザがそれに到達するとすぐに実行されます。

  2. setInterval関数が指定された間隔でのみ実行されることを保証するものではありません。setIntervalは指定された時間に関数を実行しようとしますが、実行が遅延したり、完全に実行されなくなったりする可能性があります。

于 2013-01-11T07:27:48.193 に答える
0

John Resing によるこの記事の引用:

タイマーがすぐに実行されないようにブロックされている場合、次の可能な実行ポイントまで遅延されます (これは、必要な遅延よりも長くなります)。

間隔は、実行に十分な時間がかかる (指定された遅延よりも長い) 場合、遅延なしで連続して実行される場合があります。

于 2013-01-11T07:28:35.047 に答える