setIntervalを実験する

今日の三角巾を読んで、amachang氏のsetInterval03.jsを試してみたくなって、こんな実験ページを作ってみた。

無駄に多くのsetIntervalを使ってアニメーションをすると、setInterval03.jsを使わない場合は、Firefoxだとかなりグダグダな感じになってしまう。しかし、setInterval03.jsを使うとほぼ期待通りの間隔で実行させることができるみたいだ。IEの場合でも、「●」が増えるタイミングが期待通りでないが、setInterval03.jsを使うとよくなる。ただし、はじめから一つのsetIntervalでアニメーションする場合には劣るけど。
複数のsetIntervalを登録する場合は、それらのタイミングの同期の厳密さには期待はしない方がいいだろう。

また、IEFirefoxではsetIntervalの実行が遅延した場合のポリシーが違うようだ。Javaで言うところのjava.util.Timer#schedule(IE)とjava.util.Timer#scheduleAtFixedRate(Firefox)のような感じ。

ついでに、アニメーションの途中でalertが発生させられるようにしておいた(参照:JavaScriptはほんとにシングルスレッドで実行されているのか? - sawatの日記)。IEの場合はalertが発生すると、アニメーションが全て一時停止するのに対して、Firefoxの場合だと停止しないで背後で「●」が動き続ける。(ただし、停止することもある。この辺は謎が多い。)