优化100J代码
This commit is contained in:
@ -545,19 +545,48 @@ export function deviceDetail(id) {
|
||||
function execWithBleFirst(bleExec, httpExec, logName, onWaiting) {
|
||||
const doBle = () => bleExec().then(res => ({ ...(res || {}), _channel: 'ble' }));
|
||||
const do4G = () => httpExec().then(res => { res._channel = '4g'; return res; });
|
||||
const hideWaitUi = () => {
|
||||
if (typeof onWaiting === 'function') return;
|
||||
try {
|
||||
uni.hideLoading();
|
||||
} catch (e) {}
|
||||
};
|
||||
const showWaitUi = (title) => {
|
||||
if (typeof onWaiting === 'function') return;
|
||||
try {
|
||||
uni.hideLoading();
|
||||
uni.showLoading({ title, mask: false });
|
||||
} catch (e) {}
|
||||
};
|
||||
|
||||
if (protocolInstance.isBleConnected && protocolInstance.bleDeviceId) {
|
||||
return doBle().catch(() => { console.log('[100J] 蓝牙失败,回退4G'); return do4G(); });
|
||||
}
|
||||
// 无 bleDeviceId 时:可能扫描中,先等待连接(设备页在后台可能完成连接)
|
||||
if (!protocolInstance.bleDeviceId) {
|
||||
if (typeof onWaiting === 'function') onWaiting();
|
||||
return waitForBleConnection(12000).then(connected => {
|
||||
return connected ? doBle().catch(() => { console.log('[100J] 蓝牙失败,回退4G'); return do4G(); }) : do4G();
|
||||
return doBle().catch(() => {
|
||||
console.log('[100J]', logName || '指令', '蓝牙失败,回退4G');
|
||||
return do4G();
|
||||
});
|
||||
}
|
||||
return tryReconnectBle(2500).then(reconnected => {
|
||||
return reconnected ? doBle().catch(() => { console.log('[100J] 蓝牙失败,回退4G'); return do4G(); }) : do4G();
|
||||
});
|
||||
// 无 bleDeviceId:页面可能在扫描,最多等 12s(否则用户以为点了没反应)
|
||||
if (!protocolInstance.bleDeviceId) {
|
||||
if (typeof onWaiting === 'function') onWaiting();
|
||||
else showWaitUi('蓝牙连接中…');
|
||||
return waitForBleConnection(12000)
|
||||
.then(connected => {
|
||||
return connected ? doBle().catch(() => {
|
||||
console.log('[100J]', logName || '指令', '蓝牙失败,回退4G');
|
||||
return do4G();
|
||||
}) : do4G();
|
||||
})
|
||||
.finally(hideWaitUi);
|
||||
}
|
||||
if (typeof onWaiting !== 'function') showWaitUi('正在重连蓝牙…');
|
||||
return tryReconnectBle(2500)
|
||||
.then(reconnected => {
|
||||
return reconnected ? doBle().catch(() => {
|
||||
console.log('[100J]', logName || '指令', '蓝牙失败,回退4G');
|
||||
return do4G();
|
||||
}) : do4G();
|
||||
})
|
||||
.finally(hideWaitUi);
|
||||
}
|
||||
|
||||
// 爆闪模式
|
||||
|
||||
Reference in New Issue
Block a user