[AI Generated]: feat(*): 新增配网状态检测与SDK超时保护,优化配置流程稳定性

This commit is contained in:
17792275749
2026-04-09 10:35:58 +08:00
parent e7c890fee4
commit 65acceba2a
6 changed files with 235 additions and 110 deletions
+44 -22
View File
@@ -303,31 +303,53 @@ App({
* @param {*} value 要设置的新值
*/
setGlobalData(keyPath, value) {
const keys = keyPath.split('.');
let current = this.globalData;
let oldValue = undefined;
const keys = keyPath.split('.');
let current = this.globalData;
let oldValue = undefined;
// 遍历到目标属性的父级
for (let i = 0; i < keys.length - 1; i++) {
if (!current[keys[i]]) {
current[keys[i]] = {}; // 如果路径不存在,创建空对象
}
current = current[keys[i]];
}
// 遍历到目标属性的父级
for (let i = 0; i < keys.length - 1; i++) {
if (!current[keys[i]]) {
current[keys[i]] = {}; // 如果路径不存在,创建空对象
}
current = current[keys[i]];
}
// 获取旧值
oldValue = current[keys[keys.length - 1]];
// 获取旧值
oldValue = current[keys[keys.length - 1]];
// 只有当值发生变化时才更新并通知
if (oldValue !== value) {
current[keys[keys.length - 1]] = value; // 设置新值
// 只有当值发生变化时才更新并通知
if (oldValue !== value) {
current[keys[keys.length - 1]] = value; // 设置新值
// 触发监听器
if (this.globalData._callbacks[keyPath]) {
this.globalData._callbacks[keyPath].forEach(callback => {
callback(value, oldValue);
});
}
}
// 触发监听器
if (this.globalData._callbacks[keyPath]) {
this.globalData._callbacks[keyPath].forEach(callback => {
callback(value, oldValue);
});
}
}
},
/**
* 给回调式 SDK 调用包裹超时保护,防止设备无响应时 UI 永久卡死
* @param {Function} caller 接收 done 回调的执行函数,形如 (done) => sdk.method(params, done)
* @param {number} timeout 超时毫秒数
* @param {Function} onResult 正常回调,参数与 SDK 原始回调一致
* @param {Function} onTimeout 超时后执行,负责 hideLoading + 提示
*/
callWithTimeout(caller, timeout, onResult, onTimeout) {
let settled = false;
const timer = setTimeout(() => {
if (settled) return;
settled = true;
onTimeout();
}, timeout);
caller((res) => {
if (settled) return;
settled = true;
clearTimeout(timer);
onResult(res);
});
},
})