Comments 8
Ну, использовать postMessage как setZeroTimeout уже давно придумали (статье — полтора года), а как для неактуальной информации статья пресновата.
+3
Я вижу, что с вышеприведенном вами примером есть разница, там не используются MessageChannel, как в данном способе. Статья, да получилась на скорую руку, без подробностей и разъяснений.
0
Принцип работы прост, каналы связи в этом механизме реализованы в виде двух труб, с портами на каждом конце.
Честно говоря, я вообще ничего не понял )
+4
Наверное, я одинокий идиот, но я не понимаю, для чего нужна нулевая задержка?
0
ответил Вам ниже
0
The setTimeout(..,0) trick is very useful. It allows to:
Let the browser render current changes.
Evade the “script is running too long” warning.
Change the execution flow.
javascript.info/tutorial/events-and-timing-depth
Тут есть с примерами
Let the browser render current changes.
Evade the “script is running too long” warning.
Change the execution flow.
javascript.info/tutorial/events-and-timing-depth
Тут есть с примерами
+1
Об этом написано в спецификации и на сайте Майкрософт. Суть в том чтобы отложить выполнение операций на минимальное время, тогда между установкой таймера и колбеком либо какой-то другой код сможет выполняться, либо long_running скрипт разобьется на части, и при этом время между частями будет минимальным. Либо браузер сможет отрисовать/дать время на выполнение других операций.
0
Кто-то ещё вот так делает:
function nextTick(callback){
var img = new Image;
img.onerror = callback;
img.src = 'data:image/png,' + Math.random();
}
0
Sign up to leave a comment.
setImmediate через MessageChannel