前言
我上个月换了工作,来到一家新公司担任技术总监。我成功地接管了一个大烂摊子微信小程序蓝牙开发,不能抱怨。我面临的第一个问题是公司的项目刚刚上线,但是蓝牙和微信没有连接。经常有无法建立连接的情况。没办法 系统定制开发 ,只能先解决这个问题,虽然没做过小程序。
测试了我们的产品,发现蓝牙经常连接不上,而且搜索很慢。所以,我硬着头皮啃他的原始源代码。这是一个大坑。下面我分几篇文章来描述一下我重构时微信小程序蓝牙耗电的坑:
1.蓝牙方法是异步回调方法,不能同步执行
这不是微信小程序的坑 百度小程序开发 ,是这个项目的坑,我看我们的项目代码:
wx.closeBluetoothAdapter()//关闭蓝牙模块
wx.openBluetoothAdapter({//初始化蓝牙模块成功失败回调
成功:res => {
console.log(‘蓝牙初始化成功’ + res)
//省略其他代码
},
失败:错误 => {
console.log(“打开模块失败);
}
})
由于业务逻辑的原因,我们需要先关闭蓝牙模块,然后再开启,而这里的wx.closeBluetoothAdapter本身就是一个异步函数,我们必须等待它关闭到success方法才能执行方法,所以我首先认为这是我们经常无法连接的原因。我将这段代码更改如下:
//关闭当前蓝牙模块
wx.closeBluetoothAdapter({
成功:(res) => {
console.log(“关闭蓝牙模块成功”, res);
//重启蓝牙模块
wx.openBluetoothAdapter({ //初始化蓝牙模块成功失败回调
成功:res => {
console.log(‘蓝牙初始化成功’, res)
},失败:错误 => {
console.log(‘初始化是否开启蓝牙:’, err);
},完成:函数(res){
console.log(‘初始化蓝牙执行完成:’, res)}
})
}微信小程序蓝牙开发,失败:(错误)=> {
console.log(“关闭蓝牙模块出错”, err);
},
完成:(res) => {
console.log(“关闭蓝牙模块完成”, res);//忽略
},
});
修改后微信小程序蓝牙开发,蓝牙连接的问题确实改善了很多。当时我也很开心的提交代码,拿了机器给领导演示,感觉大功告成。
不过很快会有一大波坑逼近,下一篇继续
发现、改变
探知、求新
共享,感恩一路相伴
昱远品牌形象已完成全面升级
点击访问新官网