Javascript 同时启动两个函数,或者它们写入不同的值

Javascript 同时启动两个函数,或者它们写入不同的值,javascript,react-native,Javascript,React Native,我正在创建一个应用程序,它应该使用BLE与两个外部设备进行通信。 在应用程序和设备连接之后,我应该监控一些值,比如压力、加速度计等。设备每20毫秒给我一次数据 我使用一个调用其他两个函数的函数来监视这些值,如: async monitoring(){ this.readingBattery(this.device1, this.device2); this.monitoringDeviceRight(this.device1); this.monitoringDeviceLef

我正在创建一个应用程序,它应该使用BLE与两个外部设备进行通信。 在应用程序和设备连接之后,我应该监控一些值,比如压力、加速度计等。设备每20毫秒给我一次数据

我使用一个调用其他两个函数的函数来监视这些值,如:

async monitoring(){
   this.readingBattery(this.device1, this.device2);
   this.monitoringDeviceRight(this.device1);
   this.monitoringDeviceLeft(this.device2);
}
这两个函数
this.monitoringDeviceRight
this.monitoringDeviceLeft
的作用完全相同

我的问题是,当我停止监视时,这两个函数的数据量不同。特别是,右侧的监控功能与另一个的值相比更少

你知道我能不能同时启动这两个功能

编辑1: 这就是监控功能的作用:

 this.monitoringDeviceRight(device1){
      this.action1 = await device1.monitorCharacteristicForService(service, this.AccGyrMg, (error, characteristic) => {
          if (error) {
            this.error(error.message);
            return;
          }
          const buf = Buffer.from(characteristic.value, "base64");
    //.....
          const [...acRight] = [2, 4, 6].map(index => buf.readInt16LE(index));
          this.arrayAcRight.push([this.timeR, ...acRight].join(":"))

          const [...gyRight] = [8, 10, 12].map(index => buf.readInt16LE(index));
          this.arrayGyRight.push([this.timeR, ...gyRight].join(":"))

          //.....

嗨,我从来没有在javascript中做过类似的事情,但我在Java程序中遇到了类似的问题,我用线程和屏障解决了这个问题

所以我搜索了javascript中的障碍,我发现:

正如他们在文档中所说:“这个障碍将确保所有异步函数同时达到所需的行。”


我希望这可以帮助您

假设monitoringDeviceRight和monitoringDeviceLeft是异步的,您可以这样使用

async监控(){
这个.读取电池(这个.设备1,这个.设备2);
Promise.all([monitoringDeviceRight(此设备1)、monitoringDeviceLeft(此设备2)];
}

如果你想听听我的意见,我相信这些设备或功能是不同的,因为你不应该看到有那么大的不同

嗯,不知道它们到底在做什么,所以很难给出答案。是否有一些回调来表示它们已经准备好了?这些监控函数做什么?JS是单线程的,代码是从上到下执行的。除非我们讨论的是调用堆栈,否则两个函数总是一个接一个地运行。如果执行的时间更长,它会阻止所有后续调用。编辑我的问题:)我知道,我知道,过早优化等等,还有一些离题,但这不是
const readInt16LE=index=>buf.readInt16LE(index);this.arrayAcRight.push(`this.timeR}:${readInt16LE(2)}:${readInt16LE(4)}:${readInt16LE(6)}`);this.arrayGyRight.push(`this.timeR}:${readInt16LE(8)}:${readInt16LE(10)}:${readInt16LE(12)}`)比您在这4行中创建的8个中间数组更好?该函数中的
Promise.all()
有什么意义?这只是另一个完全被忽视的承诺。@Leonardorici你说我不应该看到这么大的区别是什么意思?不管怎样,我试着使用一个承诺。但情况是一样的。正如我所预料的,承诺不会有什么区别。所有人都在同一时间解雇他们。但正如我所想,问题不在于功能的执行,而在于设备/功能本身的问题