Страницы

Поиск по вопросам

четверг, 25 октября 2018 г.

Время срабатывания таймера

1. function fn(){ alert(new Date().getTime()-last); } var last=new Date().getTime(); setTimeout(fn,200)// FF ,IE8, Сhrome около 200
2. function fn(){ alert(new Date().getTime()-last); } var last=new Date().getTime(); setTimeout(fn,200);//ie8 1125 FF 208 Chrome 203 for(var i=0;i<1000000;i++){ var j=j+1; } Как написано в одной книге ,через 200мс функция в интервале будет добавлена в очередь , а не сработает.Это задание будет ожидать очереди выполнения ,пока не будут выполнены все функции находящиеся в этой очереди до этого. Так вот меня интересует это что IE8 ждет пока не выполнится цикл а потом только запускаетсяба остальные не ждут выполнения цикла?


Ответ

JS, на уровне программиста, работает в одном потоке, даже если вы задали точный таймер, но, в этот момент времени, у вас занят поток, таймер, естественно, выполнен не будет, вернее будет выполнен с "опозданием". Если вам интересно почему у IE настолько плохие результаты, то, если без грязных слов, реализация JS в нем - не очень. Вообще меня удивляет то, что можно этого не знать, любая книга по JS, даже из разряда - "выучи за 2 недели" об этом упоминает. Специально для неверующего тов. @Чад 'а, открываем chrome, вставляем в консоль и выполняем: console.time('timer'); setTimeout(function() { console.timeEnd('timer') }, 200); for( var i=0; i<1000000; ++i ) { // .... } // у меня 2274ms смотрим, понимаем что я был прав, ставим плюсик

Комментариев нет:

Отправить комментарий