I've used setTimeout to fix "multithreading" bugs in non-web JS using apps. The screen wouldn't draw while the script ran, the GUI elements created, the options they were created with (text field) were all blank on reads even though I passed an initial value when I created the GUI element. Doing a setTimeout allowed the GUI objects to set themselves up.

Great! I answered to let other monks know that there was something similar to sleep() in JS.

I use it to update a digital clock on a CRM package. Twice a second, it updates the clock. Before I used the setTimeout, the user's PC was totally overloaded with calls to the clock update routine and there was no cpu power left for other things (like input) :-)