JavaScriptは処理速度から終了まで、ひと筋の流れで行なうシングルスレット(同期処理)だ。
簡単な処理をみてみる。
console.log(1);
console.log(2);
console.log(3);
出力は、
>1
>2
>3
である。
次に、
console.log(1);
setTimeout(function(){
console.log(2),1000
});
console.log(3);
としてみる。
出力は
>1
>3
>2
となる。
このばあいも、コードの上から順番に処理されるわけだけれど、
2行目に、あえてsetTimeout関数を使い、2の出力を1000ミリ秒、遅らせている。つまり同期処理でも非同期なこともできたりするわけ。
2行目のsetTimeout関数を処理しているあいだ、次の3行目への処理に移っている。手順は順ありながら、処理結果が逆順(非同期)になったりするわけ。
ちなみに、function(){console(){console.log(2),1000})は、setTimeoutのコールバック関数となっているね~。