0

在我的应用程序中,我使用的是OnDemandGrid由 Request + Trackable dstore 支持的 向用户显示我的数据。

服务器通过 websocket 向客户端发送通知以向网格添加新条目。要将新条目添加到网格中,商店会发出一个“添加”事件,类似于以下代码:

function _emitAddEvent(store, entity) {
    store.emit('add', {
        target: entity,
        id: entity.id
    });
}

到这里为止,一切都很好。应用程序从服务器接收要添加到网格的新条目,并添加它(不刷新网格)。问题是如果在很短的时间间隔内服务器发送的通知过多。商店将所有事件发送到 dgrid,但网格需要一些时间来呈现所有行。因为要添加的条目太多,所以应用程序没有响应。如果服务器停止向客户端发送数据,则应用程序会在一段时间后恢复并正确呈现所有行。现在是第二个(但次要的)问题。

第二个问题是,网格在渲染完所有新行之后,不会破坏太远的行。我已经设置了farOffRemoval属性,但它似乎只处理发生滚动并且向服务器请求新数据的情况。我想知道是否有一种不依赖滚动的解决方法来破坏与用户当前位置在网格上的距离​​太远的节点。

4

1 回答 1

0

好吧,我已经设法编写了第一个问题的解决方法。由于客户端在短时间内收到大量通知,因此应用程序变得无响应,因此我选择将事件添加到队列中并以每秒最多一个的速度发出它们。dojo/throttle连同 setInterval 就足够了。

第二个问题,与farOffRemoval属性有关,我无法解决。经过一些测试,我注意到浏览器可以有很多 DOM 节点而不会损失显着的性能(当然,这取决于用户机器),所以我只是保持网格不变。

于 2017-01-10T15:57:01.003 回答