Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   setTimeout в браузере IE и Opera (https://javascript.ru/forum/css-html/13764-settimeout-v-brauzere-ie-i-opera.html)

leha66 12.12.2010 20:12

setTimeout в браузере IE и Opera
 
Здравствуйте.
Не знаю, в тот ли раздел задаю вопрос, поэтому сразу извиняюсь.

Был написан скрипт, который по-разному работал на в браузере IE и Opera. Для диагностики проблемы был написан простенький скрипт, который приведён ниже:
<html>
    <head>
        <script>
            time_int = 1
            time_array = new Array()

            function get_time() {
                var wdata = new Date()
                return wdata.getMilliseconds() + (wdata.getSeconds() * 1000)
            }

            time_start = get_time()
            t1 = setTimeout(start, time_int)

            function start() {
                time_end = get_time() 
                delta = time_end - time_start
                time_array[time_array.length] = delta

                if (time_array.length != 100) {
                    time_start = get_time()
                    t2 = setTimeout(start, time_int)
                }
                else {
                    print_array()
                }
            }
 
            function print_array() {
                st = "" 
                for (i = 0; i < 100; i++) {
                    st = st + time_array[i] + " " 
                }
                alert(st)
            }
        </script>
    </head>
    <body>
    </body>
</html>

Суть следующая: берётся отметка времени, запускается функция setTimeout с заданным интервалом, снова берётся отметка времени, вычисляется разница времён. Так делается 100 раз. Ожидалось что эти разности времён примерно будут равны заданному интервалу.

Результат, который был получен в Опере: от 0 до 4, куча единиц.
Результат, который был получен в IE: от 8 до 21, в основном числа около 15.

Далее time_int увеличивал. В Опере всегда всё хорошо, а IE вплоть где-то до 25 показывал не то что хочеться.


Вопросы такие:

1) С чем это связано? IE тормоз, JS в IE тормозит, функция setTimeout в IE как-то по-другому работает или что ?

2) Мне необходимо некоторую функцию запускать каждые допустим 5 милисекунд. Как это можно сделать? (кроме как через setTimeout)

Благодарю.

Kolyaj 12.12.2010 22:05

http://alljs.ru/articles/timeout/fast-settimeout.html

leha66 13.12.2010 13:02

спасибо


Часовой пояс GMT +3, время: 02:20.