Im trying to use a native Android library that implements Interface callbacks. I have implemented the bridge, and by running this code:
for (const i in payloads) {
console.log("i", i)
const payload = payloads[i].payload
const result = await sendPayload(payload)
console.log("result", result)
}
Results in:
i 0
result 123456789
i 1
But the promise in the second iteration (1) is not resolving.
Native use this async code snippet:
_interface.sendData(data, new com.example.app.SequenceCallback() {
@Override
public void result(String result) {
Log.d("app", "returning result: " + result);
promise.resolve(result);
}
});
And the native code prints both of the Log.d -messages so it runs correctly calling promise.resolve(result), my conclusion is that the promise is lost somehow?
(A side note is that I have tried just creating a dumb @ReactMethod that instantly resolves the promise and used this in the loop. And that worked fine.)
Thank you in advance.
I tried using React's Promise and Callback, both had the same effect. I ended up providing the library(my own, I could change the code) with the Promise object like so:
_interface.sendData(data, promise, new com.example.app.SequenceCallback() {
@Override
public void result(String result, Promise rPromise) {
Log.d("app", "returning result: " + result);
rPromise.resolve(result);
}
});
Dont know why my first code didn't work, but this did.