Страницы

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

воскресенье, 15 декабря 2019 г.

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

#javascript


 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 ждет пока не выполнится цикл а потом только запускаетсяба
остальные не ждут выполнения цикла?    


Ответы

Ответ 1



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

Ответ 2



Да видимо надо смотреть в сторону WebWorker. Кроме IE его уже все держат. Спасибо @AlexWindHope, подоткрыл глаза.

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

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