美文网首页小程序低功耗蓝牙
微信小程序低功耗蓝牙开发那些坑(六)

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

作者: 唐植超 | 来源:发表于2019-03-20 13:36 被阅读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 来把写入指令的顺序排好,一步步执行,这样,即确保了速度,也确保了有序,而且,结果也正确了

    相关文章

      网友评论

        本文标题:微信小程序低功耗蓝牙开发那些坑(六)

        本文链接:https://www.haomeiwen.com/subject/uuyzmqtx.html