2017-01-06 52 views
0

在我的應用程序中,我使用的是由Request + Trackable dstore支持的OnDemandGrid,以向用戶顯示我的數據。Dojo dgrid + WebSocket通知導致應用程序無響應

服務器通過websocket向客戶端發送通知以向網格添加新條目。要將新條目添加到網格中,該店的冒落「添加」事件,如下面的代碼段的東西:

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

直到這裏,這一切都很好。應用程序從服務器接收新條目以添加到網格中,並添加它(不刷新網格)。問題是服務器在很短的時間間隔內發送的通知過多。商店將所有事件發送到dgrid,但網格需要一些時間才能呈現所有行。由於要添加的條目太多,應用程序無響應。如果服務器停止向客戶端發送數據,應用程序在一段時間後恢復並正確渲染所有行。現在是第二個(但小問題)。

第二個問題是,網格呈現所有新行後,它不會銷燬太遠的行。我已經設置了farOffRemoval屬性,但它似乎只處理髮生捲動並向服務器請求新數據的情況。我想知道是否有一種解決方法,即不依靠滾動來銷燬與用戶當前在網格上的位置距離太遠的節點。

回答

0

嗯,我已經設法解決第一個問題的解決方法。由於應用程序正在變得沒有響應,因爲客戶在很短的時間內收到了很多通知,所以我選擇在隊列中添加事件,並且每秒最多發送一次。 dojo/throttle以及setInterval就足夠了。

第二個isue,涉及到farOffRemoval屬性,我無法解決。經過一些測試後,我注意到瀏覽器可以有很多DOM節點而不會失去顯着的性能(當然,這取決於用戶機器),所以我剛剛離開了網格。