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?
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?
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