首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Web bluetooth与promises

Web bluetooth与promises
EN

Stack Overflow用户
提问于 2019-09-17 14:03:32
回答 1查看 424关注 0票数 0

我正在做一个项目,其中一个想要使用网络蓝牙连接到BLE设备。我查看了多个教程,并试图让这些教程发挥作用。在下面的代码中,我得到了设备的特征。代码可以工作,但我不知道为什么。

我希望我的承诺在找到并连接到设备时激活。但是,当我在promise中放置连接.then时,当我启动应用程序时,另一个.then已经激活了。

代码语言:javascript
复制
function read() {
    let prom = new Promise(function (resolve, reject) {
        navigator.bluetooth.requestDevice({
            acceptAllDevices: true,
            optionalServices: []
        })
            .then((device) => {
                console.log('Discovered', device);
                PCB= device;
                resolve();
                return PCB.gatt.connect();
            })
            .then(server => {
                gattServer = server;
                console.log('getting server');
                return gattServer.getPrimaryService(0x1815);
            })
            .then(service => {
                console.log('getting characteristic');
                if(0x2a56){
                    return service.getCharacteristic(0x2a56);
                }
                return service.getCharacteristic();
            })
            .then(characteristics => {
                console.log('> Characteristics: ' + characteristics + characteristics.map(c => c.uuid).join('\n' + ' '.repeat(19)));
            })
            .catch(error => {
                console.log(error);
                reject();
            });
    })
}
EN

回答 1

Stack Overflow用户

发布于 2019-09-18 16:58:15

你需要

当一系列操作完成时,function.

  • Resolve
  1. 将您的承诺返还给您。

您的问题示例,修改为//1和//2。

代码语言:javascript
复制
function read() {
  return new Promise(function(resolve, reject) { // 1
    navigator.bluetooth.requestDevice({
        acceptAllDevices: true,
        optionalServices: []
      })
      .then((device) => {
        console.log('Discovered', device);
        PCB = device;
        resolve();
        return PCB.gatt.connect();
      })
      .then(server => {
        gattServer = server;
        console.log('getting server');
        return gattServer.getPrimaryService(0x1815);
      })
      .then(service => {
        console.log('getting characteristic');
        if (0x2a56) {
          return service.getCharacteristic(0x2a56);
        }
        return service.getCharacteristic();
      })
      .then(characteristics => {
        console.log('> Characteristics: ' + characteristics +
          characteristics.map(c => c.uuid).join('\n' + ' '.repeat(19)));
        resolve(); // 2
      })
      .catch(error => {
        console.log(error);
        reject();
      });
  })
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57968195

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档