收藏
回答

怎么实现wx.request的同步

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 需求 wx.request 客户端 6.7.2 2.2.5

- 需求的场景描述(希望解决的问题)

let buf;
              if (bluetoothType == "jeez") {    //简易蓝牙的指令
                buf = that.string2buffer("open:05s");
              }
              if (bluetoothType == "mac") {     //门禁机的指令
                buf = that.string2buffer("-b&-3-12069-");
              }
              if (bluetoothType == "jz") {      //嵌入式门禁开门指令
                //获取用户的门禁权限列表
                let powerList_url = 'CustomerAPI/Index.aspx?method=getdoorsauthpool&clientcode=559574802685&doornumber=qrs001';
                http.get(powerList_url).then(res => {
                  // let hex = '0101fe 010201'
                  let hex = res.data;
                  //16进制字符串转为ArrayBuffer
                  let typedArray = new Uint8Array(hex.match(/[\da-f]{2}/gi).map(function (h) {
                    return parseInt(h, 16)
                  }))
                  buf = typedArray.buffer
                }).catch(res => {
 
                });
              }
              //发送开门指令
              wx.writeBLECharacteristicValue({
                deviceId: deviceId,
                serviceId: serviceId,
                characteristicId: write_id,
                value: buf,
                success: function (res) {
                  console.log("buf", buf);
                  console.log("write-suc", res);
 
                },
                fail(res) {
                  console.log(res);
                  //发送开门指令失败时提示
                  that.openDoorFail(deviceId);
                }
              })


因为只有一个if中需要请求接口,所以不希望将wx.writeBLECharacteristicValue加入到promise.then中,有能么办法能让这段代码同步执行吗?



最后一次编辑于  2018-10-23
回答关注问题邀请回答
收藏

1 个回答

  • 卢霄霄
    卢霄霄
    2018-10-23

    wx.writeBLECharacteristicValue 这一团内容写成一个方法

    在最后一个if里加个else,调用方法,另外在网络请求的回调里也写上调用该方法

    2018-10-23
    有用 1
    回复 4
    • 2018-10-23

      如果写成方法,在异步中调用,我不知道会不会影响到

      notify通知模式:wx.notifyBLECharacteristicValueChange

      的特征值变化监听:wx.onBLECharacteristicValueChange,

      不知道卢大神对蓝牙有没有研究过,我就是怕这个地方会有问题,而且现在还没办法调试,我先按你说的写,然后能调试了再试试看


      2018-10-23
      回复
    • 卢霄霄
      卢霄霄
      2018-10-23回复

      就算你用Promise,其实也只是跳过了当前方法,下一次onChange该进的时候,还是会进

      2018-10-23
      回复
    • 卢霄霄
      卢霄霄
      2018-10-23回复

      没玩过蓝牙,只看了API。。哈。。哈哈哈。。纸上谈兵

      2018-10-23
      回复
    • 2018-10-23回复卢霄霄

      嗯嗯,多谢了,我先这样写着,不过还是希望wx.request的API中能有个参数来决定是同步还是异步

      2018-10-23
      回复
登录 后发表内容