docs: 补充市场排名生命周期说明

This commit is contained in:
clz
2026-07-24 15:15:44 +08:00
parent 8e1a1f1eee
commit e9b6c7cbdf
+51 -6
View File
@@ -48,12 +48,38 @@ doc/ HTTP 与 4106 行情接口文档
`firstPageVisible``true` 时获取当前 Tab 的 contracts。contracts 返回后先生成占位列表,
再由 `MarketRankingHqRequestClient` 发起行情订阅,行情回调会整体替换 `CardData`
```text
aboutToAppear
→ 注册 TCP 重连事件
→ 获取当前 Tab 的 contracts
→ 填充合约占位列表
→ 页面可见时订阅行情
```mermaid
flowchart TD
appear["aboutToAppear"] --> config["读取卡片配置"]
config --> listen["监听 tcpReconnect"]
listen --> visible{"firstPageVisible?"}
visible -- 否 --> idle["等待页面恢复可见"]
visible -- 是 --> fetch["获取当前 Tab 的 contracts"]
fetch --> placeholder["填充合约占位列表"]
placeholder --> stillVisible{"页面仍然可见?"}
stillVisible -- 否 --> idle
stillVisible -- 是 --> subscribe["订阅行情"]
subscribe --> update["行情回调更新 CardData"]
update --> waiting["等待下一次行情推送"]
waiting --> update
refresh["refreshTrigger 变化"] --> stop["停止旧行情订阅"]
tab["Tab 切换"] --> stop
stop --> clear["清空列表"]
clear --> fetch
hidden["firstPageVisible = false"] --> stopOnly["停止行情订阅"]
shown["firstPageVisible = true"] --> hasContracts{"已有 contracts?"}
hasContracts -- 是 --> subscribe
hasContracts -- 否 --> fetch
reconnect["tcpReconnect"] --> reconnectVisible{"页面可见?"}
reconnectVisible -- 否 --> idle
reconnectVisible -- 是 --> reconnectStop["停止旧行情订阅"]
reconnectStop --> hasContracts
disappear["aboutToDisappear"] --> unlisten["解绑 tcpReconnect"]
unlisten --> stopOnly
```
运行期间按以下规则更新:
@@ -70,6 +96,25 @@ aboutToAppear
`aboutToDisappear` 会解绑 TCP 重连监听并停止行情订阅。HTTP 请求等待期间如果页面变为
不可见,contracts 仍可更新,但不会创建行情订阅。
### 当前异常与恢复处理
| 异常或状态 | 处理方式 |
| --- | --- |
| HTTP 获取 contracts 失败 | `updateCardData` 捕获异常并清空列表 |
| TCP 连接恢复 | 收到 `tcpReconnect` 后,仅在页面可见时停止旧行情并重新订阅 |
| TCP 重连时没有 contracts | 重新请求 contracts,请求成功后再订阅行情 |
| TCP 重连时页面不可见 | 忽略重连事件,页面恢复可见后再订阅 |
| 页面变为不可见 | 立即停止行情订阅 |
| 页面恢复可见 | 优先使用已有 contracts 恢复订阅;没有数据时重新请求 |
| 手动刷新 | 停止旧行情、重新请求 contracts,并在可见时重新订阅 |
| Tab 切换 | 停止旧行情、清空旧列表、请求新 Tab 数据并重新订阅 |
| HTTP 返回时页面已隐藏 | 更新 contracts,但不建立行情订阅 |
| 组件消失 | 解绑 TCP 重连监听并停止行情订阅 |
当前异常处理仍属于基础兜底:尚未实现 HTTP 自动重试、错误提示、请求取消、请求序号校验,
以及行情订阅失败后的延迟重试。快速切换 Tab 时,较早发出的请求仍可能晚于新请求返回;
首次加载使用的延迟任务也尚未在组件消失时取消。
## 数据与接口
当前 HTTP Fetcher 仅构造请求参数,行情客户端也尚未连接真实客户端桥接层;页面使用 Mock