- createBLEConnection当连接超时3次后,第4次连接调用直接报出超时的错误?
// 连接蓝牙 async linkDevice() { const that = this; const maxRetryCount = 3; let retryCount = 0; // 连接连接失败,重试3次 async function connectWithRetry() { try { const blueId = that.getBluetoothId(); await uni.openBluetoothAdapter(); await uni.getBluetoothAdapterState(); await uni.startBluetoothDevicesDiscovery(); const joinResult = await connectBluetooth(blueId); uni.stopBluetoothDevicesDiscovery({ success(res) { console.log("停止搜索成功", res); }, fail(err) { console.log("停止失败", err); }, }); if (joinResult.err) { throw new Error("连接失败"); } } catch (err) { console.log("初始化蓝牙失败", err); if (retryCount < maxRetryCount) { retryCount++; console.log(`重试连接,当前第 ${retryCount} 次`); await connectWithRetry(); } else { // 达到最大重试次数,执行失败处理 uni.showModal({ title: "提示!", content: "蓝牙连接失败,请重新操作设备!", showCancel: false, confirmText: "确定", success: (res) => { if (res.confirm) { that.unlockingFailure(); } }, }); } } } // 开始首次连接尝试 await connectWithRetry(); }, /** * 连接蓝牙 + 获取主服务 + 获取特征码 */ export const connectBluetooth = async (deviceId) => { console.log('deviceId---------------------', deviceId); try { // 连接蓝牙设备 await uni.createBLEConnection({ deviceId, timeout: 3000, }); // 获取主服务 const serviceId = await getServiceIdWithRetry(deviceId, 10); // 获取特征码 const characteristicId = await getCharacteristicId(deviceId, serviceId); // 返回设备数据 const deviceData = { deviceId, serviceId, characteristicId, }; return deviceData; } catch (error) { console.log('连接蓝牙发生错误', error); // 连接失败 return { err: true, errName: error.toString(), ...error, }; } }; [图片] 图片是第4次重新操作设备的日志输出,可以看到在1秒钟直接超时失败重连3次都是超时
11-21 - 页面加载完后获取不同dom距离顶部的高度,但是如果一进来就滑动页面,获取的高度就少了咋办?
const heightArr = []; // 获取节点距离容器顶部的高度 wx.nextTick(() => { // eslint-disable-next-line array-callback-return tabList.map((item) => { createSelectorQuery() .select(`#_${item.value}`) .boundingClientRect((resTop) => { heightArr.push(Number(resTop.top) - 45); if (heightArr?.length >= 4) { this.setState({ heightArr, }); } }) .exec(); }); }); 需求是获取dom距离顶部的高度,从而来进行scroll-view的scroll-top定位,现在的效果是进入页面后不动页面,获取的高度准确,点击dom定位 也准确。但是如果一进去页面就滑动页面,获取的高度就不准确,获取出来是距离当前顶部的高度,我想要获取dom距离页面最上面的距离
2023-09-12 - 页面使用ScrollView,页面中有个tab有粘性定位的样式,点击tab的选项需要定位位置被遮挡?
tab的样式属性是粘性定位,top 0,会固定在最上方,点击tab滚动时,tab由于具有定位会遮挡住内容的一小部分,这个有啥解决方法?试过scrollview的scrollTop属性,但是页面功能太多,页面加载完后获取的高度不准确。。。导致定位的位置就不准确
2023-09-12