![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| fish9370 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 15.4.2007 Где: Москва Репутация: нет Всего: 1 |
Есть бесконечный лог, который пребывает по websockets, и кладется в div. Подскажите как лучше сделать ротацию, чтобы ограничиться, к примеру, 100 строками? Алгоритм FIFO
- использую jquery -------------------- undefined |
|||
|
||||
| Cheloveck |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: нет Всего: 32 |
Проще всего взять knockout и сделать что-то вроде того
http://jsfiddle.net/Lz6xegt0/4/ Это сообщение отредактировал(а) Cheloveck - 28.12.2014, 00:21 -------------------- ![]() |
||||
|
|||||
| fish9370 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 15.4.2007 Где: Москва Репутация: нет Всего: 1 |
Если я правильно Вас понял, идея состоит в том, чтобы раз в секунду отсекать лишние строки?
одно уточнение: лог приходит как Plain Text, т.е. его сначала надо парсить, чтобы побить на строки лог прибывает не равномерно, может прибывать очень интенсивно, а может отсутствовать часами. Если мы будем вхолостую каждую секунду выполнять какую-то работу, пусть даже и пустяковую, нужно ли это? возможно, более эффективно в момент получения новой порции лога, разбить ее на строки, добавить в div и после этого сразу удалить лишнее? но ведь, чтобы понять, сколько лишних строк нужно удалить, нужно будет каждый раз дергать DOM, для вычисления количества элементов, можно ли это как-то избежать? -------------------- undefined |
|||
|
||||
| Cheloveck |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: нет Всего: 32 |
Нет, не правильно. Я использовал setInterval только лишь для эмуляции источника лога. Основная идея состоит в том, чтобы перед добавлением новой записи удалить самую старую, если записей уже масимально (у меня 10).
В том то и дело, что нокаут не будет дёргать дом, он его (DOM) строит по модели. Кроме того, удалять можно всегда одну строку перед добавлением одной строки. Это сообщение отредактировал(а) Cheloveck - 29.12.2014, 00:08 -------------------- ![]() |
||||
|
|||||
| fish9370 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 15.4.2007 Где: Москва Репутация: нет Всего: 1 |
а это не хуже, строить DOM, вместо того, чтобы посчитать количество элементов? я бы не хотел делать ни то, ни другое (но похоже считать придется)
хороший способ, если бы приходила всегда одна строка. Строк может прити сколько угодно -------------------- undefined |
||||
|
|||||
| Cheloveck |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: нет Всего: 32 |
Элементы дома будут достраиваться только для новых элементов массива. Старые элементы дома никто трогать не будет.
Удали это сколько угодно перед добалением. Я не понимаю, в чём проблема? Мозг включи и почитай доки по нокауту! -------------------- ![]() |
||||
|
|||||
| fish9370 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 15.4.2007 Где: Москва Репутация: нет Всего: 1 |
Человек, ты абсолютно прав, нокаут наверняка хороший инструмент, но мне он сейчас не подходит. Проблему я конечно решил, хоть и абсолютно топорно
-------------------- undefined |
||||
|
|||||
| sQu1rr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 597 Регистрация: 11.11.2008 Где: london Репутация: 1 Всего: 13 |
Я не понимаю а в чем проблема что бы хранить лог в переменной, обновлять ее, а только потом DOM.
Javascript феерический быстр. DOM - тормоз. чем меньше обращений к DOM тем лучше. Вот псевдокод, не проверял на корректность, но идея такая:
|
|||
|
||||
| fish9370 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 15.4.2007 Где: Москва Репутация: нет Всего: 1 |
sQu1rr, спасибо за совет, попробую сравнить на досуге.
Но мне не нравится глобальная переменная. Не нравится потому, что потенциально логов может быть много. В идеале меня вообще не должно заботить сколько логов на странице. Можете, что-то посоветовать? -------------------- undefined |
|||
|
||||
| sQu1rr |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 597 Регистрация: 11.11.2008 Где: london Репутация: 1 Всего: 13 |
Да.
А в глобальной переменной нет ничего плохого. Это же жабаскрипт, тут подругому между разными скриптами никак. Даже этот ваш jquery делает 2 (как минимум) глобальных А еще
Это сообщение отредактировал(а) sQu1rr - 6.1.2015, 20:01 |
||||
|
|||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |