javascript - 如何从java返回数据到javascript?

标签 javascript java android react-native

我用java编写了 native 代码来获取gmail帐户的帐户信息。

虽然只是从第一种方法返回,但我在 JavaScript 中未定义。在第二种方法中,我通过回调返回电子邮件地址到 js,效果完美。

第一种方法:-

java代码:-

@ReactMethod
    public String getUsername() {
        AccountManager accountManager = AccountManager.get(myContext);
        Account account = getAccount(accountManager);
        if (account == null) {
           return null;
        } else {
            return account.name;
        }
    }

RN 方面:-

let email  = NativeModules.GetInfo.getUsername();
alert(email) //undefined
<小时/>

第二种方法:

java代码:-

@ReactMethod
    public void getUsername(Callback errorCallback, Callback successCallback) {
        AccountManager accountManager = AccountManager.get(myContext);
        Account account = getAccount(accountManager);
        if (account == null) {
            errorCallback.invoke("not found");
        } else {
            successCallback.invoke(account.name);
        }
    }

RN 方面:-

NativeModules.GetInfo.getUsername((error)=> {
                alert(error)
            },
            (email)=> {
                alert(email) //works perfect
            }
        )

最佳答案

我认为你需要用 Promise 来处理它。将方法签名更改为

public void getUsername(final Promise promise){
    ...
    promise.resolve("username");
}

并在你的 JavaScript 中

...
let username = await NativeModules.GetInfo.getUsername();

关于javascript - 如何从java返回数据到javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43720116/

相关文章:

javascript - 使用颜色矩阵添加色调效果

javascript - 后退按钮无法调用 Chrome 中的 AJAX 内容位置

java - 无法从 java servlet 中的 facebook 访问 token 获取所有数据

java - waitForCondition 不工作,但 Thread.sleep 使脚本工作

javascript - 单击按钮时,检查用户是否登录

javascript - angularjs常量是一个函数而不是字符串

java - JAX-B 仅从输出中排除字段,但允许输入

android - 无法解决错误 - 查看需要 API 级别 14(当前最小值为 8): <GridLayout>

android - 如何将 Android WebView BaseURL 设置为应用程序私有(private)文件

java - 如果收到广播,是否会调用应用程序类 OnCreate