android - React-Native Promise
问题描述
我在 android native 中有一个方法,如下所示:
@ReactMethod
public void showReject(String message, int duration, Promise promise) {
Toast.makeText(
reactContext, message, duration
).show();
promise.reject("Success Reject", "sjdnsj");
}
我从 react-native 调用此方法,例如:
import ToastExample from './src/view/ToastModule'
_Decrement = async () => {
await ToastExample.showReject('Example', ToastExample.long)
.then((data) => console.log(data))
.catch((data) => console.log(data.toString()));
}
问题 :
1.即使我没有从 react-native 向 promise 传递任何值,我仍然会从中得到回调。当调用上述方法时,我得到了 catch 的结果。任何人都可以向我解释 react-native promise 的工作原理吗?如何promise
在本机中初始化并调用其方法?
2.我可以将promise作为参数传递并调用它的方法吗?
任何人都可以提供帮助。
解决方案
您没有解决本机代码中的承诺(使用 promise.resolve() 而不是拒绝)。Promise.reject 去 catch 块,而 resolve 去 then 块。
您同时使用await
和then
。尝试使用其中之一,您可以async
像这样编写函数
async function decrement() {
try {
const resovled = await ToastExample.showReject('Example', ToastExample.long);
} catch(err) {
console.error(err);
}
}
或使用 then 语法
function decrement() {
ToastExample.showReject('Example', ToastExample.long)
.then((data) => console.log(data))
.catch((error) => console.error(error);
}
推荐阅读
- laravel - 将变量从 LoginController 传递到视图 - Laravel
- java - java spring boot如何创建一个包含多个对象的json数组
- swift - 将 UIImage 作为纹理添加到 RealityKit 中的平面
- javascript - 在运行时需要基于变量的 JSON 文件
- reactjs - 在 React + Material UI 中使用 prop 作为类名
- swift - 快速从 .npy 转换为 MLMultiArray 以进行 CoreML 预测
- verilog - 如何使用 Verilog 从 100MHz 时钟生成 400MHz 和 500MHz 时钟?
- python - 为什么它不从 YouTube 获取任何“a”标签?
- python - 将 Zeep 对象转换为 DataFrame
- php - 在 PHP 中将变量添加到外部 URL