В моем приложении я использую OnDemandGrid
, поддерживаемый объектом Request + Trackable dstore, для отображения моих данных пользователю.Dojo dgrid + уведомления в WebSocket, вызывающие отключение приложения
Сервер отправляет уведомления клиенту через websocket для добавления новых записей в сетку. Для добавления новых записей в сетку, магазин непосредственно излучающий в «добавить» событие, что-то вроде следующего куска кода:
function _emitAddEvent(store, entity) {
store.emit('add', {
target: entity,
id: entity.id
});
}
Пока здесь, это все хорошо. Приложение получает новую запись с сервера для добавления в сетку и добавляет ее (без обновления сетки). Проблема заключается в том, что слишком много уведомлений отправляется сервером в течение небольшого интервала времени. Хранилище передает все события в dgrid, но сетка занимает некоторое время, чтобы отобразить все строки. Поскольку слишком много записей, которые нужно добавить, приложение не отвечает. Если сервер перестает отправлять данные клиенту, через некоторое время приложение восстанавливает и корректно отображает все строки. Теперь идет вторая (но второстепенная) проблема.
Вторая проблема заключается в том, что после того, как сетка отображает все новые строки, она не разрушает слишком большие строки. Я установил атрибут farOffRemoval
, но, похоже, он обрабатывает только случаи, когда прокрутка происходит, и на сервер запрашиваются новые данные. Я хотел бы знать, есть ли обходной путь, который не зависит от прокрутки, для уничтожения узлов, которые слишком далеки от текущей позиции пользователя в сетке.