Binding.scala: стратегия для определения длины Vars - PullRequest
0 голосов
/ 16 мая 2018

Это связано с связыванием обновлений scala-стратегии-избегать-слишком-много-dom-tree-*

В моем проекте scala-adapters Я отображаю записи журнала, которые отправляются через веб-сокет.

Я не могу контролировать, сколько записей отправлено.Поэтому, если записей много, экран зависает.

Я создал ScalaFiddle для имитации этого: https://scalafiddle.io/sf/kzr28tq

Как ограничить длину записей (Vars) или какова лучшая стратегия для удаления первой записи Vars, если достигнута максимальная длина?

1 Ответ

0 голосов
/ 18 мая 2018

Пара вариантов:

  • Если вам не нужно хранить все данные, просто замените их в 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("")

...