menu
書いてる野郎
orebike@gmail.com
ブラウザ上の JavaScript 実装はシングルスレッド。しかし非同期な処理も行う。 内部では、関数の実行単位で処理を順々にに行っている。つまり非同期な同時実行ではなく、順番がコントロールできない同期処理なのである。 非同期処理のイベントとは関数を処理キューにキューイングするタイミングをコントロールするものだということになる。
setTimeout 関数は指定期間後に指定した関数を実行する関数だが、これは指定期間後にイベントが発火すると考えると、このタイミングで登録した関数が処理キューにキューイングされるということだ。
処理キューにキューイングされるということなのでつまり厳密には指定期間後には実行されないということである。
不便なようだがこれを利用すると処理の決定と処理の実行を分離できるので、現在実行中の処理に影響を与えないように、後続処理を割りこませることができるようになる。