setTimeoutを使って、一呼吸置いてから処理を実行させたいとき(例えば3秒後に実行とか)、設定したのに「何で3秒待ってくれないの~?」ということってありませんか?
↓以下のページの内容がまさにそれでした。
- JavaScriptの setTimeout関数の実行タイミングに関する誤解 – takami_hirokiの日記
- JavaScript を学ぶ際に一番重要なのに、誤解されがちな setTimeout 系の概念 – IT戦記
こちらのでサイトでは以下を実行した際の例で説明してくれているのですが・・・
document.write("hoge\n"); setTimeout(function(){ document.write("fuga\n") }, 1000); document.write("piyo\n");
そして…
普通に JavaScript を使いこなしてる人なら、hoge → piyo と表示して、 1 秒後に fuga が表示されるな。って思うはずなんです。
でも、 JavaScript を始めたばっかりの人の中には、 hoge と表示したあと 1 秒後に fuga → piyo と表示するな。って思ってる人が非常に多い。(経験的に)
・・・はい、すみませんでした。まさにご指摘の通り…。
またつまらない時間をかけてしまった…。