Зависание браузера при выполнении JavaScript


На заметку, оставлю небольшое решение проблемы зависания браузера или возникновение ошибки по таймауту при большом цикле или при сортировке данных функцией sort() в JavaScript.

Иногда бывает нужно обработать большой объем данных в браузере с помощью JavaScript или отсортировать большой массив. Но при этом браузер не выдерживает и зависает или выдает ошибку что было остановлено выполнение функции по таймауту.

Существует простое решение этой проблемы, которое помогает немного обмануть браузер, чтоб он «думал», что все хорошо и данные обрабатываются.

Для этого в теле цикла достаточно разместить следующий код:

if(outs > 4000){
outs = 0;
setTimeout(doWork, 1);
}
outs++;

где doWork – это пустая функция:

 function doWork(){}

С помощью такой манипуляции мы приостанавливаем выполнение основной функции и вызываем пустую doWork с задержкой в 1 мс. Этого достаточно, чтоб браузер не вылетал по таймауту и продолжал выполнение большого цикла.
Ну о недостатках писать думаю не стоит, они и так ясны.

1 Star2 Stars3 Stars4 Stars5 Stars (голосов 1, в среднем: 5.00 из 5)
Loading ... Loading ...



  1. Нет комментариев, пока!.
(will not be published)

Spam Protection by WP-SpamFree

  1. No trackbacks.