⬆️ ⬇️

setImmediate via MessageChannel

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

Source: https://habr.com/ru/post/128079/



All Articles