第三章练习答案
保存 previous 和本次操作的 operationId,成功只确认当前操作,失败只回滚仍由该操作负责的状态。按钮在请求中禁用或合并重复操作;服务端使用幂等键,客户端超时后显示未知状态并允许重新查询,而不是盲目判定失败。
哪些状态可以保存
答案必须保留本节输入、操作和可观察结果。先运行成功路径,再运行一个反例;
text
输入:第一次执行 → 改变一个条件 → 取消或卸载
预期:状态转移与正文规则一致;取消后没有迟到写入;失败保留可诊断原因若结果不同,优先检查资源所有权、执行时机和宿主前提,而不是只改最终 UI。
先决定谁拥有状态
答案必须保留本节输入、操作和可观察结果。先运行成功路径,再运行一个反例;
text
输入:第一次执行 → 改变一个条件 → 取消或卸载
预期:状态转移与正文规则一致;取消后没有迟到写入;失败保留可诊断原因若结果不同,优先检查资源所有权、执行时机和宿主前提,而不是只改最终 UI。
只接受仍然有效的结果
答案必须保留本节输入、操作和可观察结果。先运行成功路径,再运行一个反例;
text
输入:第一次执行 → 改变一个条件 → 取消或卸载
预期:状态转移与正文规则一致;取消后没有迟到写入;失败保留可诊断原因若结果不同,优先检查资源所有权、执行时机和宿主前提,而不是只改最终 UI。
缓存不是全局真相
答案必须保留本节输入、操作和可观察结果。先运行成功路径,再运行一个反例;
text
输入:第一次执行 → 改变一个条件 → 取消或卸载
预期:状态转移与正文规则一致;取消后没有迟到写入;失败保留可诊断原因若结果不同,优先检查资源所有权、执行时机和宿主前提,而不是只改最终 UI。