fix(equipment): 连接设备增加超时与失败兜底,避免加载一直转圈
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
4be9712000
commit
680794702e
@@ -54,7 +54,9 @@ let unsubDevicesList: (() => void) | null = null
|
|||||||
let unsubConnect: (() => void) | null = null
|
let unsubConnect: (() => void) | null = null
|
||||||
let unsubDisconnected: (() => void) | null = null
|
let unsubDisconnected: (() => void) | null = null
|
||||||
let unsubDeviceConnect: (() => void) | null = null
|
let unsubDeviceConnect: (() => void) | null = null
|
||||||
|
let unsubConnectState: (() => void) | null = null
|
||||||
let scanTimer: number | null = null
|
let scanTimer: number | null = null
|
||||||
|
let connectTimer: number | null = null
|
||||||
|
|
||||||
Page({
|
Page({
|
||||||
data: {
|
data: {
|
||||||
@@ -90,7 +92,10 @@ Page({
|
|||||||
unsubDevicesList = null
|
unsubDevicesList = null
|
||||||
unsubConnect?.()
|
unsubConnect?.()
|
||||||
unsubConnect = null
|
unsubConnect = null
|
||||||
|
unsubConnectState?.()
|
||||||
|
unsubConnectState = null
|
||||||
if (scanTimer !== null) { clearTimeout(scanTimer); scanTimer = null }
|
if (scanTimer !== null) { clearTimeout(scanTimer); scanTimer = null }
|
||||||
|
if (connectTimer !== null) { clearTimeout(connectTimer); connectTimer = null }
|
||||||
},
|
},
|
||||||
|
|
||||||
/** 订阅断开事件:设备长时间未操作或意外断开时,同步页面状态为未连接 */
|
/** 订阅断开事件:设备长时间未操作或意外断开时,同步页面状态为未连接 */
|
||||||
@@ -199,7 +204,10 @@ Page({
|
|||||||
unsubDevicesList = null
|
unsubDevicesList = null
|
||||||
unsubConnect?.()
|
unsubConnect?.()
|
||||||
unsubConnect = null
|
unsubConnect = null
|
||||||
|
unsubConnectState?.()
|
||||||
|
unsubConnectState = null
|
||||||
if (scanTimer !== null) { clearTimeout(scanTimer); scanTimer = null }
|
if (scanTimer !== null) { clearTimeout(scanTimer); scanTimer = null }
|
||||||
|
if (connectTimer !== null) { clearTimeout(connectTimer); connectTimer = null }
|
||||||
|
|
||||||
wx.showLoading({ title: '连接中...', mask: true })
|
wx.showLoading({ title: '连接中...', mask: true })
|
||||||
wx.openBluetoothAdapter({
|
wx.openBluetoothAdapter({
|
||||||
@@ -218,12 +226,40 @@ Page({
|
|||||||
unsubDevicesList?.()
|
unsubDevicesList?.()
|
||||||
unsubDevicesList = null
|
unsubDevicesList = null
|
||||||
leFuService.stopScan()
|
leFuService.stopScan()
|
||||||
leFuService.connect(matched.raw)
|
|
||||||
unsubConnect = leFuService.onDeviceConnect(() => {
|
// 连接超时兜底:15 秒未连上则结束 loading
|
||||||
|
connectTimer = setTimeout(() => {
|
||||||
|
connectTimer = null
|
||||||
|
unsubConnect?.()
|
||||||
|
unsubConnect = null
|
||||||
|
unsubConnectState?.()
|
||||||
|
unsubConnectState = null
|
||||||
|
wx.hideLoading()
|
||||||
|
wx.showToast({ title: '连接失败,请重试', icon: 'none' })
|
||||||
|
}, 15000)
|
||||||
|
|
||||||
|
// 连接失败:立即结束 loading
|
||||||
|
unsubConnectState = leFuService.onConnectState((state) => {
|
||||||
|
if (state !== leFuService.BLUE_STATE.CONNECTFAILED) return
|
||||||
|
if (connectTimer !== null) { clearTimeout(connectTimer); connectTimer = null }
|
||||||
|
unsubConnectState?.()
|
||||||
|
unsubConnectState = null
|
||||||
unsubConnect?.()
|
unsubConnect?.()
|
||||||
unsubConnect = null
|
unsubConnect = null
|
||||||
wx.hideLoading()
|
wx.hideLoading()
|
||||||
|
wx.showToast({ title: '连接失败,请重试', icon: 'none' })
|
||||||
|
})
|
||||||
|
|
||||||
|
leFuService.connect(matched.raw)
|
||||||
|
unsubConnect = leFuService.onDeviceConnect(() => {
|
||||||
|
if (connectTimer !== null) { clearTimeout(connectTimer); connectTimer = null }
|
||||||
|
unsubConnect?.()
|
||||||
|
unsubConnect = null
|
||||||
|
unsubConnectState?.()
|
||||||
|
unsubConnectState = null
|
||||||
|
wx.hideLoading()
|
||||||
wx.setStorageSync('connectDeviceInfo', matched.raw)
|
wx.setStorageSync('connectDeviceInfo', matched.raw)
|
||||||
|
this._updateStatus(targetDeviceId, true)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
leFuService.startScan()
|
leFuService.startScan()
|
||||||
|
|||||||
Reference in New Issue
Block a user