H3.10.3cancellable retry设计
重试期间需保留用户可取消
别名: 取消重试 · abort retry · 可取消
概念解释
自动或手动重试一旦开始,界面不能把人锁在转圈里直到次数用尽。可取消指在重试进行中仍能停止等待、改参数、离开或改走查询。取消不是撤销已发生的副作用,它停的是还没发出的下一次尝试和对界面的占用。这条不管上限是几次,也不管该不该自动重试。
机制
重试把时间从用户手里拿走。人在这段时间里可能已经发现参数错了、网络要用别的方式、或根本不想再试。没有取消,注意被进度占满,错误输入会在下一次尝试里再提交一遍。取消把控制权在间隔之间交还:停掉计时器、不再发下一次、表面回到可编辑或可离开。对已在飞行中的请求,取消至少要停止等待它的界面,并避免在回包到达时又自动踢出下一轮。
边界
支付类在「状态未知」时,取消等待不能被理解成「取消了扣款」。表面要写清:停止重试 ≠ 撤销副作用,下一步是查询。无法被中断的底层调用仍应让人离开这页,而不是用模态锁死。无障碍上,取消必须是可聚焦的控件,不能只靠点转圈外面。
怎么落地
- 重试表面常驻取消或关闭,点下后不再调度下一次请求,并解除对表单的锁定。
- 取消文案区分「停止重试」与「撤销已发生的事」;后者若做不到就不要写撤销。
- 回包若在取消之后到达,只更新静默状态或提示去查询,不要自动开始新一轮。
- 验证:开始重试后立刻点取消,看是否还有后续请求发出、表单是否能改。还有请求或锁还在,取消就是摆设。