Оптимизация цикла jQuery - PullRequest
0 голосов
/ 16 июня 2009

Есть ли способ оптимизации цикла jQuery при работе с довольно большим объемом данных. Браузер имеет тенденцию блокироваться во время прохождения данных, и все, что ниже IE8, выдает сообщение «скрипт выполняется слишком медленно».

Я просто использую jQuery.each (data, function (i, val)), чтобы получить имя поля и значение для поля из базы данных, а затем автоматически заполнить поле этим значением.

Данные взяты из файла json, который генерируется при входе в систему.

Любые предложения будут оценены.

Ответы [ 3 ]

1 голос
/ 16 июня 2009

Недавний Google Tech Talk от нескольких дней назад о высокопроизводительном JavaScript, в котором упоминалось, что .each () имеет огромные издержки и почему.

http://www.youtube.com/watch?v=mHtdZgou0qU

Эти вещи могут быть довольно сложными, чтобы исправить.

Как часто вы делаете эту операцию? Можете ли вы разбить его на более мелкие части с помощью setTimeout и дать вашему пользователю индикатор выполнения, пока вы это делаете?

0 голосов
/ 16 июня 2009

Я столкнулся с той же проблемой, когда просматривал результаты, и я не использую функцию each (). Поведение блокировки, которое происходит в функции обратного вызова ajax, блокирует страницу, включая любые индикаторы «загрузки».

Одно из решений, которое я еще не реализовал, состоит в том, чтобы ajax рекурсивно извлекал результаты в виде «кусков» и отображал x результатов за раз (20–50?). Таким образом, пользователь получает немедленную обратную связь, и восприятие блокировки не происходит.

Может быть, что-то подобное может сработать для вас -

0 голосов
/ 16 июня 2009

Переместите итерацию медленной петли на сервер и создайте приятный глаз, который будет держать пользователя занятым в ожидании результата от сервера. Если результат зацикливания не блокирует, отправьте функцию обратного вызова на сервер и дайте пользователю возможность продолжить рабочий процесс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...