首页 > 解决方案 > 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作为参数传递并调用它的方法吗?

任何人都可以提供帮助。

标签: androidreact-nativepromisereact-native-android

解决方案


您没有解决本机代码中的承诺(使用 promise.resolve() 而不是拒绝)。Promise.reject 去 catch 块,而 resolve 去 then 块。

您同时使用awaitthen。尝试使用其中之一,您可以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);
}

推荐阅读