gpt4 book ai didi

websocket - 如何使用 Ember-Data 加载推送的记录更新而不与 inFlight 事务冲突?

转载 作者:行者123 更新时间:2023-12-03 08:09:18 24 4
gpt4 key购买 nike

我的 Ember/Ember-Data/Rails 应用程序使用 WebSockets 将数据向下推送到客户端。我正在使用 Ember-Data 的 loadMany 方法将推送的数据添加到存储中。

但是,如果当前正在编辑和保存任何推送的记录,loadMany 将失败,因为该记录当前处于 inFlight 状态。例如:

-> 用户编辑记录并点击保存
-> Ember-Data 开始提交当前事务
-> Rails Controller 使用更新的 JSON 响应此记录并通过 WebSockets 发布更新的数据
-> 在事务完成之前接收到 WebSockets 数据,Ember-Data 在记录被标记为干净之前尝试用这个新数据更新记录

我找到的唯一解决方案是使用 Ember.run.later 延迟应用更新,超时时间约为 20 毫秒。 (Ember.run.next 无效。)

但是,这仅处理用户刚刚保存记录的情况。如果巧合的是,用户当前正在编辑的一条记录被其他人编辑,并且在事务完成之前收到推送更新,那么仍然会发生冲突并引发错误。

所以我的问题是,有没有办法:

(a) 当受影响的记录在进行中时,防止商店尝试加载更改;或者(b) 延迟推送更新直到所有交易都干净?

最佳答案

*蟋蟀*

目前,我已经通过手动检查记录是否处于不可更新状态以及如果处于不可更新状态,注册退出该状态时的回调来解决此问题。然后在回调之后我检查推送更新是否有比记录更新的 updatedAt 值,如果有,合并两者。

关于websocket - 如何使用 Ember-Data 加载推送的记录更新而不与 inFlight 事务冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13959968/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com