【问题标题】:Dojo dgrid + WebSocket notifications causing application to become unresponsiveDojo dgrid + WebSocket 通知导致应用程序无响应
【发布时间】:2017-01-06 19:44:17
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: javascript dojo dgrid dstore


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多