页面可见性变化时定时器与后台工作应如何避免形成唤醒风暴
简答题中等372 次浏览
参考答案与解析
# 核心结论
页面失去可见性、进入后台、被冻结或被系统回收后,业务不能继续沿用前台定时调度模型。应按任务价值、时效性、可靠性和可取消性分类:界面动画与可丢弃预取应停止,普通同步任务应合并并降低频率,必须完成的草稿保存或交易提交应持久化状态并保证幂等。恢复时不能补执行所有错过的定时器,而应根据当前时间、任务版本和最后成功状态,只执行仍有业务价值的增量工作,从而避免集中网络请求、计算和渲染形成唤醒风暴。
# 底层机制
浏览器可能节流后台标签页的定时器,页面还可能进入冻结状态或前进后退缓存,因此不能假设 setTimeout、setInterval 和动画回调会按墙上时间连续执行。小程序进入后台后可能被挂起乃至回收,
