

Javascript asynchronous problems - gringofyx
http://www.codingjohnson.com/javascript-asynchronous-problems

======
lewispollard
I thought setTimeout was still blocking... Javascript isn't threaded, after
all. When you do a setTimeout with a large interval, doesn't it simply keep
track of how long it's been since you made the call, and at the appropriate
time blocks the current code and runs the function? If so, what difference
does using setImmediate/setTimeout(x, 0) make?

~~~
aa0
Timeouts are not checked on every event loop, hence the 4ms delay. And no,
setTimeout is asynchronous and processed during the event loop.

Basic event loop is; timeouts, js execution, repaint, reflow, etc

~~~
lewispollard
What I mean to say is, what's the practical difference between running
setImmediate(doSomething) and just calling doSomething() in its place if
setImmediate blocks the execution anyway, is there some kind of special use
that would make it useful?

~~~
aa0
Yes, render,reflow,timeouts,event handling, etc happens.. You might need to
set a CSS property and then animate it. In this case you'll need to wait for a
render in between the two steps

Also useful if you need to wait until after all event handlers are executed in
the current context

~~~
lewispollard
Gotcha, thanks for the explanation!

------
semjada
that explains my issues with <10ms setTimeouts, thanks!

