3

这与binding-scala-strategy-to-avoid-too-many-dom-tree-updates有关

在我的项目scala-adapters中,我显示通过 websocket 发送的日志条目。

我无法控制发送多少条目。因此,如果有很多条目,屏幕就会冻结。

我创建了一个 ScalaFiddle 来模拟它:https ://scalafiddle.io/sf/kzr28tq

限制条目长度( )的方法是什么,或者如果达到最大长度Vars,删除 a 的第一个条目的最佳策略是什么?Vars

4

1 回答 1

3

几个选项:

  • 如果您不需要保留所有数据,只需在 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("")

于 2018-05-17T22:23:58.417 回答