在我的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);
}
}
为了解决眼前的问题,我将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的回调模式的解决方案。