I have to read a value from a BLE devive and then write to it another value so this is my function to do it:
getBit = (device) => {
try {
device.readCharacteristicForService(this.state.sUuid, this.state.cUuid2)
.then((read) => {
switch (this.toHexByte(read.value)) {
case 'ee':
this.setState({ countC0: 0 });
break;
case 'c0':
this.setState({ countC0: this.state.countC0 + 1 });
break;
default: // the bit I want to stock
this.setState({
resId: [...this.state.resId, this.toHexByte(read.value)],
countC0: 0
});
break;
}
device.writeCharacteristicWithoutResponseForService(this.state.sUuid, this.state.cUuid2, this.state.respBit)
})
return
}
catch (err) {
console.log("find catch error:", err);
}
}
but I have to call this function until I get the same bit ('c0'
) 3 time so I loop for it like that:
while (countC0 < 15) {
this.getBit(device);
countC0++;
}
The problem is that I receive Please report: Excessive number of pending callbacks: 501
error because I'm calling an async function in a while loop.