这与binding-scala-strategy-to-avoid-too-many-dom-tree-updates有关
在我的项目scala-adapters中,显示通过websocket发送的日志条目。
我无法控制发送多少个条目。因此,如果有很多条目,屏幕将冻结。
我创建了一个ScalaFiddle来模拟它:https://scalafiddle.io/sf/kzr28tq
限制条目长度(Vars
)的方法是什么,或者如果达到最大长度,则丢弃Vars
的第一个条目的最佳策略是什么?
最佳答案
几个选项:
if (entries.value.length > display)
entries.value.remove(0, entries.value.length - display)
entries.value += (0 to 1000).map(_=>Random.nextInt(9)).mkString("")
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("")