Pull to refresh

setImmediate через MessageChannel

Reading time1 min
Views2.4K
В данной статье будет коротко описан еще один метод реализации «нулевой» задержки setTimeout(callback, 0).
Всем кому интересно — под кат.

Коротко о главном


Стандартный setTimeout делает минимальную задержку в несколько миллисекунд, в IE 10 даже изобрели setImmediate который позволяет устанавливать «нулевую» задержку. Про то, как это работает, хорошо написано тут ie.microsoft.com/testdrive/Performance/setImmediateSorting/Default.html

Пример кода, который работает в Chrome, Safari, Opera  
function setZeroTimeout(callback) {
var channel = new MessageChannel();
channel.port1.onmessage = callback;
channel.port2.postMessage('');
}


Достоинства


Достоинство этого метода в отличие от метода описанного в dbaron.org/log/20100309-faster-timeouts то, что будет работать в WebWorker'ах.

Минусы


Не все браузеры поддерживаются. Firefox не работает. т.к. не поддерживает MesageChannel и SharedWorker.

Стандарт MessageChannel описан в документации www.whatwg.org/specs/web-apps/current-work/complete/web-messaging.html#channel-messaging
Tags:
Hubs:
If this publication inspired you and you want to support the author, do not hesitate to click on the button
Total votes 11: ↑6 and ↓5+1
Comments8

Articles