小程序低功耗蓝牙

微信小程序低功耗蓝牙开发那些坑(六)

2019-03-20  本文已影响0人  唐植超

前言

后台告诉我,很多蓝牙状态不对,我和他对了一下,发现是我这里蓝牙监听有问题,但是并没有任何报错,我细看了一下原来的写入代码,
发现早期的代码,是这样:

setTimeOut(function(){
  //具体的写入命令省略
this.writeBLECharacteristicValue(cmd1);
},100);

setTimeOut(function(){
  //具体的写入命令省略
this.writeBLECharacteristicValue(cmd2);
},200);

setTimeOut(function(){
  //具体的写入命令省略
this.writeBLECharacteristicValue(cmd3);
},300);

后来被改造的后

//写入命令1
this.writeBLECharacteristicValue(cmd1);
//写入命令2
this.writeBLECharacteristicValue(cmd2);
//写入命令3
this.writeBLECharacteristicValue(cmd2);

改造的原因很简单,因为时间等待那个,本身也不可靠,老是状态不对.
我觉得主要原因是同时写入的问题,于是我把代码改成异步方式

new Promise(function(resolve, reject) {
      this.writeBLECharacteristicValue(cmd1,function(){
          //写入完成的回调函数
          resolve("1");
      });
   
    }).then(res => {
      return new Promise(function(resolve, reject) {
         this.writeBLECharacteristicValue(cmd2,function(){
          //写入完成的回调函数
          resolve("2");
          });
      });
    }).then(res => {
      return new Promise(function(resolve, reject) {
          this.writeBLECharacteristicValue(cmd2,function(){
          //写入完成的回调函数
          resolve("2");
          });
      });
    }).then(res => {
      console.log("执行写入完成");
    });

通过 Promise 来把写入指令的顺序排好,一步步执行,这样,即确保了速度,也确保了有序,而且,结果也正确了

上一篇下一篇

猜你喜欢

热点阅读