1.1 KiB
1.1 KiB
- 协议常量集中声明于 constants.js,并以命名空间式导出(如 BLE_OTA_NOTIFY_ACK、BLE_OTA_FINISH_ERR_、TARGETS.),所有业务模块通过 import 使用而非魔法数字硬编码。
- DOM 节点在 state.js 启动时一次性缓存到 els 对象,高频路径直接读取属性,避免重复 getElementById;stages.js 对共用状态栏也采用首读缓存 + isConnected 失效回退模式。
- 阶段 UI 通过 stages.js 的 setBleStage(stageNum, detail, barState) 统一推进,错误路径使用 setBleStageError(detail) 将当前 active 节点标记 err,禁止各模块自行修改 className。
- 异步长耗时操作采用“waiter”模式:用 state.ackWaiter / state.otaResultWaiter 存储 resolve/reject + timer,超时或中止时主动清除并 reject,防止悬挂 Promise。
- 日志输出统一经 state.bleLog(tag, message, level) 封装后注入 common/log.js 的 addLog,标签前缀固定为 'BLE-*',便于侧边栏筛选。
- 跨通道状态判断使用 isBleUploading()(state.uploading || state.autoFlashing)与 window.isUploading 组合判定,避免单个通道上传时另一通道 UI 被意外重置。