基本だけどしばしば忘れてしまうので忘れないようにメモ。 JavaScriptのwindow.setTimeoutは、それが呼び出された瞬間から指定ミリ秒だけWaitして実行される。つまり、 for (var i = 0; i < 5; i++) { window.setTimeout(function(){myfunc()}, 500); } このようなコードを実行すると、5回実行される myfunc() は(ほぼ)同時に実行されてしまう。なので、5回のmyfunc()を500ミリ秒ごとに遅延実行させたいときは、 for (var i = 0; i < 5; i++) { window.setTimeout(function(){myfunc()}, 500 * (i + 1)); } のように、1回目は500ミリ秒後、2回目は1000ミリ秒後、・・・とセットしないといけない。
![うっかり忘れてしまうJavaScriptのsetTimeout実行タイミング - F.Ko-Jiの「一秒後は未来」](https://cdn-ak-scissors.b.st-hatena.com/image/square/49bc6ff267b075ca4e583d1b7a0fc5db18dae524/height=288;version=1;width=512/http%3A%2F%2Fblog.fkoji.com%2Fwp-content%2Fuploads%2F2017%2F01%2Ffkoji-twitter-icon.png)