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("")

Другие вопросы по тегам