Максимальное время выполнения для JavaScript

Я знаю, что у обоих т.е. и Firefox есть пределы для выполнения JavaScript (Источник 1, Источник 2). На основе количества выполняемых операторов я слышал, что это были 5 миллионов где-нибудь в IE и на основе числа секунд в Firefox: это - 10 секунд по умолчанию для моей версии.

Вещь, которую я не получаю, - то, какие случаи пробегутся через эти пределы:

  1. Я уверен, что гигантский цикл пробежится через предел в течение времени выполнения

  2. Но будет событие hander пробегаться через предел, если сам это будет время выполнения, находится под пределом, но если это происходит многократно?

Пример:

Позволяет говорят, что у меня есть таймер на моей странице, которая выполняет некоторый JavaScript каждые 20 секунд. Время выполнения для обработчика таймеров составляет 1 секунду. Firefox и т.е. рассматривают каждый вызов таймерной функции seperatly, таким образом, это никогда не пробегается через предел или является этим, что Firefox/т.е. складывает время каждого вызова поэтому после концов обработчика, поэтому после 200 секунд на моем сайте (с таймером, названным 10 раз), ошибка происходит даже при том, что сам обработчик таймеров составляет только 1 секунду долго?

10
задан Daniel Vassallo 16 June 2010 в 03:28
поделиться

2 ответа

В следующей статье Николаса Закаса обсуждается, как и когда разные браузеры прерывают длительный выполнение кода JavaScript:

Разбиение кода длительной обработки на небольшие фрагменты и запуск их с помощью таймеров - фактически один из способов обойти эту проблему. В следующем сообщении о переполнении стека предлагается способ решения этой проблемы:

С другой стороны, веб-воркеры больше подходят для длительной обработки, поскольку их выполнение происходит в отдельный процесс и, следовательно, не блокирует поток пользовательского интерфейса:

Однако сеть рабочие не поддерживаются в Internet Explorer, и у них не будет доступа к DOM.

8
ответ дан 4 December 2019 в 01:55
поделиться

Обработчик события считается новым контекстом выполнения - ограничение по времени сбрасывается.

Если вам нужно выполнить еще больше вычислений, взгляните на WebWorkers.

1
ответ дан 4 December 2019 в 01:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: