我想构建一个乐观的 ui,我可以在其中执行所有 CRUD 操作。例如,用户可以在其中添加、更新和删除待办事项的待办事项应用程序。
但是,我找不到任何讨论不仅仅是添加项目的资源。例如:
- https://redux-toolkit.js.org/rtk-query/usage/optimistic-updates
- https://www.apollographql.com/docs/react/v2/performance/optimistic-ui/
如果服务器响应有两个以上的状态(例如成功、失败),其他文章甚至建议不要使用乐观更新。
有人可以指出我处理以下一些事情的任何文档、教程或论文吗?或者一个已经成功实施的网站?
排队请求时遇到的一些问题:
- 回滚
- 用户添加待办事项 1
- POST 请求 1 已发送
- 用户做了很多改变
- 以下http请求排队等待第一个完成
- 请求 1 失败
- 我们回滚到原来的状态
用户丢失了所有更改
- 浪费的带宽
- 用户添加待办事项 1
- POST 请求 1 已发送
- 用户添加待办事项 2
- POST 请求 2 已排队
- 用户删除待办事项 2
- DELETE 请求 3 已排队
- POST 请求 1 完成
- 发出 POST 请求 2
- 发出删除请求 3
我们不必发送请求 2 和 3
除了对请求进行排队,我还可以对请求进行去抖动并将事务日志或仅当前状态发送到后端。然后后端可以计算出所需的最少数据库更新。
也许已经有一些这些不同的算法?