android - react native promise

标签 android promise react-native

我在 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 。

您正在使用 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);
}

关于android - react native promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57972021/

相关文章:

java - Android Activity 中是否需要私有(private)静态 `fields`

android - 使用 Google Voice 发送短信

javascript - axios Promise 如何定义错误

ios - React Native - iOS - 无效的 `Podfile` 文件 : undefined method `[]' for nil:NilClass

android - 如何在模拟器中启用即时应用程序选项

android - 如何仅在触发特定 Activity 后启动 FCM ID 服务?

node.js - 将数据推送到 Promise 之外的数组

node.js - 提供数据处理进展

android - react native : Error while building project

javascript - React Native 模态不关闭