fix(离线预订缓存轮询): 修复网络监听器注销后状态同步问题
确保网络监听器注销时同步清理相关状态,避免脏数据干扰后续流程 优化启用轮询时的依赖检查逻辑,保证即时生效
Showing
1 changed file
with
12 additions
and
1 deletions
| ... | @@ -170,7 +170,14 @@ const teardown_network_listener = () => { | ... | @@ -170,7 +170,14 @@ const teardown_network_listener = () => { |
| 170 | polling_state.network_listener = null | 170 | polling_state.network_listener = null |
| 171 | } | 171 | } |
| 172 | } | 172 | } |
| 173 | + // 注销后,清空网络监听器引用,确保后续调用能正常工作 | ||
| 173 | polling_state.network_listener = null | 174 | polling_state.network_listener = null |
| 175 | + /** | ||
| 176 | + * 核心目的:清空 network_usable = null 是为了让状态和监听器的生命周期完全同步 —— 监听器注销后,其产生的网络状态也必须失效,避免 “无监听器却有状态” 的矛盾; | ||
| 177 | + * 关键作用:通过让 should_run_polling() 直接返回 false,杜绝基于过期状态启动轮询的可能; | ||
| 178 | + * 设计思维:体现了 “状态闭环” 的工程化思想 —— 任何状态都要有明确的产生、更新、销毁逻辑,不残留 “脏数据” 干扰后续流程。 | ||
| 179 | + */ | ||
| 180 | + // 清空网络可用性状态,确保后续判断逻辑能正常工作 | ||
| 174 | polling_state.network_usable = null | 181 | polling_state.network_usable = null |
| 175 | } | 182 | } |
| 176 | 183 | ||
| ... | @@ -256,7 +263,11 @@ const release_polling_ref = () => { | ... | @@ -256,7 +263,11 @@ const release_polling_ref = () => { |
| 256 | 263 | ||
| 257 | export const enable_offline_booking_cache_polling = (options) => { | 264 | export const enable_offline_booking_cache_polling = (options) => { |
| 258 | normalize_options(options) | 265 | normalize_options(options) |
| 259 | - // 核心防重复——如果已经启用,直接返回 | 266 | + /** |
| 267 | + * 核心目的:对 app_enabled=true 的场景做兜底,确保轮询在 “已启用但异常停止” 时能被主动恢复,而非被动等待网络变化; | ||
| 268 | + * 执行逻辑:先保证网络监听器(轮询的依赖)就绪,再尝试启动轮询,且利用 start_offline_booking_cache_polling 的幂等性避免重复; | ||
| 269 | + * 设计思维:体现了 “主动调用需即时生效” 的用户体验考量,以及 “依赖前置检查” 的工程化思维 —— 先保证依赖(监听器)就绪,再执行核心操作(启动轮询)。 | ||
| 270 | + */ | ||
| 260 | if (polling_state.app_enabled) { | 271 | if (polling_state.app_enabled) { |
| 261 | ensure_network_listener().then(() => start_offline_booking_cache_polling(polling_state.last_options || {})) | 272 | ensure_network_listener().then(() => start_offline_booking_cache_polling(polling_state.last_options || {})) |
| 262 | return | 273 | return | ... | ... |
-
Please register or login to post a comment