1

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.

Robertko
  • 21
  • 3

1 Answers1

0

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.

Robertko
  • 21
  • 3