React-Native NativeModules - 是否存在Android / Java回调模式

问题描述 投票:0回答:1

在我的react-native JS代码中,我正在调用一个Native Module,它阻止了UI线程大约1.5秒。使用Runnable在不同的线程上运行它但是我无法捕获Runnable中发生的返回值?

@ReactMethod
  public void print(final String printerAddress, final String price, final String description, final String upc, Promise promise) {
    try {
      boolean success = false;

      new Thread(new Runnable() {
        public void run() {
          success = mEpsonPrinter.printLabel(printerAddress, price, description, upc);
        }
      }).start();

        promise.resolve(success);
    } catch (IllegalViewOperationException e) {
        promise.reject(e);
    }
  }
java android react-native
1个回答
0
投票

为了解决眼前的问题,我将promise.resolve(success)调用放在Runnable.run()

try {    
      new Thread(new Runnable() {
        public void run() {
          boolean success = mEpsonPrinter.printLabel(printerAddress, price, description, upc);

        promise.resolve(success);
        }
      }).start();
    } catch (IllegalViewOperationException e) {
        promise.reject(e);
    }

虽然我仍然在质疑Java的回调模式的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.