This article will briefly describe another method of implementing a “zero” delay setTimeout (callback, 0).
Anyone who is interested - under the cat.
Briefly about the main thing
Standard setTimeout makes the minimum delay of a few milliseconds, in IE 10 even invented setImmediate which allows you to set a "zero" delay. How it works is well written here
ie.microsoft.com/testdrive/Performance/setImmediateSorting/Default.html
Sample code that works in Chrome, Safari, Opera
function setZeroTimeout(callback) {
var channel = new MessageChannel();
channel.port1.onmessage = callback;
channel.port2.postMessage('');
}
Virtues
The advantage of this method as opposed to the method described in
dbaron.org/log/20100309-faster-timeouts is that it will work in WebWorkers.
')
Minuses
Not all browsers are supported. Firefox is not working. because Does not support MesageChannel and SharedWorker.
The MessageChannel standard is described in the documentation
www.whatwg.org/specs/web-apps/current-work/complete/web-messaging.html#channel-messaging