我在 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
如何在 native 中初始化并调用它的方法?
2. 我可以将 promise 作为参数传递并调用它的方法吗?
任何人都可以提供帮助。
最佳答案
您没有在 native 代码中解决 promise (使用 promise.resolve() 而不是拒绝)。 Promise.reject 进入 catch block ,而 resolve 进入 then block 。
您正在使用 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);
}
关于android - react native promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57972021/