'How to know when monitorCharacteristic is done with react native ble plx?

I use react-native-ble-plx in my project to communicante with my tool, and I'm trying to monitor one of its characteristics.

The result is rather long so the monitoringCharacteristic function is looping until it has send me everything, but I don't know how to be sure that the loop is done.

Here is my monitoring function :

const scanMyDevice = async (device) => {

    const serviceUUID = '569a1-****'
    const writeUUID = '569a2-****'
    const readUUID = '569a2-****'

    await device.discoverAllServicesAndCharacteristics()
    await device.characteristicsForService(serviceUUID)

    await device.writeCharacteristicWithResponseForService(serviceUUID, writeUUID, 'IzEwCg==')

    var tempTrame = ''

    const subscription = device.monitorCharacteristicForService(serviceUUID, readUUID, (error, a) => {

      if (error) {
        console.log(error)
        console.log(error.message)
      }
      else {
        tempTrame = tempTrame + base64.decode(a.value)
        setTrameResult(tempTrame)
        console.log('// INSIDE ///', tempTrame)
      }
    }, 'idMonitor')

    return () => {
      subscription.remove();
    }

    console.log('DONE')
  }

In my code, 'DONE' is going to be printed before 'INSIDE trame'.

I tried to put console.log('DONE') inside the return, but then it was never printed. I tried to put .then( console.log('DONE')) just before return but it sent me an error saying that it has nothing to do here...

Can someone help me please ?



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source