H3.10.3cancellable retry设计

重试期间需保留用户可取消

别名: 取消重试 · abort retry · 可取消

概念解释

自动或手动重试一旦开始,界面不能把人锁在转圈里直到次数用尽。可取消指在重试进行中仍能停止等待、改参数、离开或改走查询。取消不是撤销已发生的副作用,它停的是还没发出的下一次尝试和对界面的占用。这条不管上限是几次,也不管该不该自动重试。

机制

重试把时间从用户手里拿走。人在这段时间里可能已经发现参数错了、网络要用别的方式、或根本不想再试。没有取消,注意被进度占满,错误输入会在下一次尝试里再提交一遍。取消把控制权在间隔之间交还:停掉计时器、不再发下一次、表面回到可编辑或可离开。对已在飞行中的请求,取消至少要停止等待它的界面,并避免在回包到达时又自动踢出下一轮。

边界

支付类在「状态未知」时,取消等待不能被理解成「取消了扣款」。表面要写清:停止重试 ≠ 撤销副作用,下一步是查询。无法被中断的底层调用仍应让人离开这页,而不是用模态锁死。无障碍上,取消必须是可聚焦的控件,不能只靠点转圈外面。

怎么落地

  • 重试表面常驻取消或关闭,点下后不再调度下一次请求,并解除对表单的锁定。
  • 取消文案区分「停止重试」与「撤销已发生的事」;后者若做不到就不要写撤销。
  • 回包若在取消之后到达,只更新静默状态或提示去查询,不要自动开始新一轮。
  • 验证:开始重试后立刻点取消,看是否还有后续请求发出、表单是否能改。还有请求或锁还在,取消就是摆设。

延伸

  • 同组H3.10.1 自动重试需有次数上限 · H3.10.2 非幂等操作不得自动重试
  • 相邻H1.07 提交防重复 · H1.16 提交后的结果呈现 · H3.02 错误消息的三要素
  • 站内检索cancellable retry · abort · retry UI

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/H3.10.3