【问题标题】:React-Native PromiseReact-Native Promise
【发布时间】:2020-01-18 04:28:35
【问题描述】:

我在 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 作为参数传递并调用它的方法吗?

任何人都可以提供帮助。

【问题讨论】:

标签: android react-native promise react-native-android


【解决方案1】:

您没有在本机代码中解决承诺(使用 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);
}

【讨论】:

    猜你喜欢
    • 2018-12-08
    • 1970-01-01
    • 1970-01-01
    • 2022-12-22
    • 2019-07-18
    • 2019-01-26
    • 2020-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多