localstorage 存刷新频率需“读取早、写入准、回退稳”:初始化时读取并校验(parseint+正整数判断),失败则降级默认值60且不写入;切换时立即保存字符串、重置定时器;多看板加前缀隔离,捕获securityerror静默降级。

用 localStorage 存刷新频率(如 30s、60s、手动),页面加载时读取并设为默认值,用户切换时立即保存,同时触发定时器重置——核心是“读取早、写入准、回退稳”,避免空值或非法数字导致轮询异常。
初始化时读取并设置默认刷新间隔
在看板 JS 初始化阶段(早于数据请求),从 localStorage 读取已保存的间隔值;若不存在、为空或非正整数,则使用业务默认值(如 60):
- 用 parseInt() 转换,过滤掉字符串干扰(如 "60s" → 60)
- 校验是否为有效正整数:!isNaN(val) && val > 0 && Number.isInteger(val)
- 若校验失败,降级为默认值(如 60),不写入 localStorage(避免污染)
- 将该值用于启动轮询:startAutoRefresh(savedInterval)
用户切换时立即保存并生效
监听下拉框或按钮组的变更事件(如 change 或 click),获取用户选择的数值后同步执行两件事:
- 调用 localStorage.setItem('dashboardRefreshInterval', String(newVal))(务必转为字符串)
- 立即停止旧定时器,用新间隔重启轮询,并更新 UI 显示(如高亮当前选中项)
- 支持特殊值如 "0" 或 "manual" 表示禁用自动刷新,此时应清除定时器且不存无效数字
注意多看板隔离与安全兜底
若同一页面含多个独立看板(如销售看板、库存看板),需加前缀区分 key,防止互相覆盖:
- 例如:'dashboardSalesRefreshInterval'、'dashboardInventoryRefreshInterval'
- 避免直接存对象,单值字符串更轻量可靠;如需结构化扩展(如含启用开关),再改用 JSON.stringify
- 捕获 SecurityError(如 iOS 隐私模式):try/catch 包裹读写操作,失败时静默降级为内存变量
- 不依赖 localStorage 存在性做逻辑分支,所有路径都必须有明确默认值
可选:提供重置与全局管理封装
为提升可维护性,可封装基础工具函数:
- getRefreshInterval(key, defaultVal = 60):统一读取 + 类型校验 + 默认回退
- setRefreshInterval(key, value):自动转字符串、防 NaN、支持 "manual" 等语义值
- resetDashboardRefresh(key):移除对应 key,恢复默认行为
- 所有函数内部处理异常,对外暴露简洁接口,业务层无需关心底层细节
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











