当我的 Presenter 被显示时,我必须进行 RPC 调用。该调用会导致包含大量数据的 String[]。但是这个电话非常非常慢。完成大约需要 1 分钟。
经过一些测试,我发现 ListBox.addItem() 占用了这个调用的 30% 以上。现在是在该 Widget 上添加 String 的大好时机。
我能做些什么来缩短这个时间?
假设我需要在 Presenter 显示时加载所有内容。
我已经做过的事情:
- 将我的查询放在一个 View 中(不会影响太大)
- 服务器读取一个 Txt 文件而不是调用 DB(最差然后是 View)。
- 使用集合类 ArrayList、Vector...(Vector 减少了 5% 的时间)
我注意到 GWT 设计了一个 LightweightCollections改进客户端对集合的使用(这是我的下一步)。
但是我能对 ListBox 做些什么呢?
最佳答案
太多的选择是没有选择的。
您将无法调整 GWT Listbox/ValueListBox 以显示如此大量的数据(考虑到 20 秒,即 1 分钟的 30%,我猜测条目数为 1000)。 GWT 列表框用于选择。您不能指望用户看到 1000 个值、滚动然后选择。这是用户交互的噩梦。
正确的方法是使用异步加载的 SuggestBox 来处理如此庞大的数据。借助 SuggestBox,您可以根据用户输入的键过滤和显示较少的数据作为选择。
如果使用 SuggestBox 不可行,您必须尝试在 Cell Widgets 中使用 CellList(它们可能会显示更好的性能)- https://developers.google.com/web-toolkit/doc/latest/DevGuideUiCellWidgets
我不确定,但试试 GWTChosen - http://jdramaix.github.com/gwtchosen/
关于gwt - 在 GWT ListBox 中处理大量数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13801640/