I1.06.2explicit post-timeout state设计

超时后的状态需明确而非停留在等待

别名: 超时态 · hung waiting · timeout not idle

概念解释

钟响了,请求被客户端放弃,转圈却还在转——这是最糟的超时:系统已经不在等,界面还在装等。超时后的状态必须明确:从「进行中」离开,进入「这次没完成」,并说出下一步(重试、检查网络、查看是否已提交)。停留在等待,等于把一次已经结束的失败继续演示成尚未结束的希望。

明确不是多一行小字。是状态机真正换档:加载指示停掉、主按钮从进行中回来、错误或不确定结果占据原来等结果的位置。

机制

等待态占用的是「结果还可能来」的预期。超时切断了来的可能,若视觉上仍占用这条预期,人会无限期监测一个不会再响的通道。监测耗注意,也阻止人采取超时之后唯一有用的行动:换一条路。更糟的是迟到的响应:界面仍在等,晚到的结果会突然写入,人以为当前这次成功了,其实成功的是已经被放弃的那一次,和下一次操作搅在一起。

所以超时必须同时做两件事:对用户换档,对程序取消或隔离这次请求的回调。只换档不隔离,迟到写入会把明确状态再打回混乱。

边界

长任务被产品钟判超时、但服务端仍在跑时,明确态应是「客户端不再等待」,同时提供查询入口,而不是断言任务已失败。弱网下超时可能误报,明确态要可逆:重试是一等公民。自动重试进行中不应展示超时态,那会闪一下失败再恢复,制造假警报;超时态只在重试预算用尽后出现。

怎么落地

  • 超时的同一拍:停掉所有进行中指示,换成失败或不确定完成的明确结果,原操作入口恢复可点。
  • 文案区分「没连上」「连上了但没在时限内完成」「可能已提交、请先查询」。不要都写成「加载失败」。
  • 丢弃或隔离该次请求的回调,迟到的 200 不能再改当前屏幕。
  • 验证:把接口挂起超过产品超时。转圈必须消失,屏幕上必须出现非等待的状态。再让接口在超时后返回成功,界面不得把这份成功写进当前这次操作。

延伸

  • 同组I1.06.1 超时时长需按操作类型分别设定 · I1.06.3 用户可主动放弃等待
  • 相邻I2.08 加载失败 · I3.01 系统状态可见
  • 站内检索timeout state · abandoned request · late response isolation

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/I1.06.2