Javascript 在高延迟网络下使用余烬数据时出现异常行为

Javascript 在高延迟网络下使用余烬数据时出现异常行为,javascript,ember.js,ember-data,Javascript,Ember.js,Ember Data,保存我的余烬数据模型会导致数据存储根据服务器的响应更新记录 在大多数情况下,此功能是预期的,并且工作得非常好。但是,我遇到了这样一种情况:如果服务器响应缓慢,那么保存后修改的所有字段现在都会重置 我们有一个需要“保存输入模糊”的要求,所以我重新打开了一些内置的视图帮助程序,向当前控制器发送一个“保存”事件。例如: Ember.Select.reopen(Ember.TargetActionSupport, { _sendSave: function() { this.triggerA

保存我的余烬数据模型会导致数据存储根据服务器的响应更新记录

在大多数情况下,此功能是预期的,并且工作得非常好。但是,我遇到了这样一种情况:如果服务器响应缓慢,那么保存后修改的所有字段现在都会重置

我们有一个需要“保存输入模糊”的要求,所以我重新打开了一些内置的视图帮助程序,向当前控制器发送一个“保存”事件。例如:

Ember.Select.reopen(Ember.TargetActionSupport, {
  _sendSave: function() {
    this.triggerAction({
      action: 'save',
      target: this.get('controller')
    });
  }.on('change')
});
至于我当前的解决方案,我只是限制
save
操作:

save: function() {
  Ember.run.throttle(this, this._save, 5000); // saves the model if `isDirty`
}

我想知道是否有人对处理这个问题的最佳方法有什么想法?我的团队提到的一个解决方案是不同步传入响应中的数据。我认为这不是一个好主意,我更希望当前记录合并到响应的记录中。请告诉我是否需要进一步细化。

我最终修改了
adapterDidCommit
挂钩,将当前数据与服务器数据合并

这里解释了一种解决方案:


我发现一篇文章完美地描述了这个问题,但没有提供解决方案:似乎不应该修改任何
inFlight
记录。我看不到这个错误再次出现,但问题仍然存在。
adapterDidCommit: function() {
  var currentData = this.toJSON();

  this._super.apply(this, arguments);

  Ember.merge(this._data, currentData);
}