我的Ember/Ember-Data/Rails應用程序使用WebSocket將數據向下推送到客戶端。我使用Ember-Data的loadMany方法將推送的數據添加到商店。如何使用Ember-Data加載推送記錄更新而不與inFlight交易衝突?
但是,如果任何推送的記錄正在編輯和保存,則loadMany將失敗,因爲記錄當前處於inFlight狀態。例如:
- >用戶編輯記錄,並點擊保存
- > Ember公司-數據開始提交當前事務
- > Rails的控制器更新JSON響應此記錄並公佈通過的WebSockets
更新的數據 - >交易完成之前收到WebSockets數據,Ember-Data嘗試使用此新數據更新記錄,然後記錄標記爲清除
我發現的唯一解決方案是推遲使用Ember應用更新。 run.later的超時時間約爲20ms。 (Ember.run.next沒有工作。)
但是,這隻處理用戶剛剛保存記錄的情況。如果巧合,用戶正在編輯的記錄由其他人編輯,並且在事務完成之前接收到推送更新,則衝突仍會發生並觸發錯誤。
所以我的問題是,有沒有一些方法之一:
(一)從嘗試時受影響的記錄飛行負載變化防止商店;或(b)推遲推送更新,直到所有交易清潔爲止。