Binding.scala: стратегия для определения длины Vars
Это связано с привязкой обновлений scala-стратегии-избегать-слишком-много-dom-дерева
В моем проекте scala-адаптеры я отображаю записи журнала, которые отправляются через веб-сокет.
Я не контролирую, сколько записей отправлено. Поэтому, если записей много, экран зависает.
Я создал ScalaFiddle для имитации этого: https://scalafiddle.io/sf/kzr28tq/4
Какой способ ограничения длины записей (Vars
) или какова лучшая стратегия для удаления первой записи Vars
если максимальная длина достигнута?
1 ответ
Пара вариантов:
Если вам не нужно хранить все данные, просто замените их в ListBuffer: https://scalafiddle.io/sf/fsaJbkc/2
if (entries.value.length > display) entries.value.remove(0, entries.value.length - display) entries.value += (0 to 1000).map(_=>Random.nextInt(9)).mkString("")
Если вам нужно сохранить все данные, но вы хотите отобразить подмножество, используйте другое связывание, основанное на первом: https://scalafiddle.io/sf/i75YiYN/2
val displayedEntries = Binding { val allEntries = entries.bind if (allEntries.length > display) allEntries.drop(allEntries.length - display).toList else allEntries.toList }
Без изменений здесь:entries.value += (0 to 1000).map(_=>Random.nextInt(9)).mkString("")