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

如何将数据从java返回到javascript?,javascript,java,android,react-native,react-native-android,Javascript,Java,Android,React Native,React Native Android,我用java编写本机代码来获取gmail帐户的帐户信息 当从第一个方法返回时,我在javascript中没有定义。在第二种方法中,我通过回调js返回电子邮件地址,这非常有效 第一种方法:- java代码:- RN侧:- 第二种方法: java代码:- RN侧:- 我认为你需要用承诺来处理这件事。将方法签名更改为 public void getUsername(final Promise promise){ ... promise.resolve("username"); }

我用java编写本机代码来获取gmail帐户的帐户信息

当从第一个方法返回时,我在javascript中没有定义。在第二种方法中,我通过回调js返回电子邮件地址,这非常有效

第一种方法:-

java代码:-

RN侧:-


第二种方法:

java代码:-

RN侧:-


我认为你需要用承诺来处理这件事。将方法签名更改为

public void getUsername(final Promise promise){
    ...
    promise.resolve("username");
}
在你的javascript中

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

问题是?在第一个方法中简单地返回会产生javascript中未定义的结果。我不得不用callback。知道第一种方法有什么问题吗?我们不能简单地返回数据吗?我的猜测是不,至少在react native docs中没有任何暗示。
@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);
        }
    }
NativeModules.GetInfo.getUsername((error)=> {
                alert(error)
            },
            (email)=> {
                alert(email) //works perfect
            }
        )
public void getUsername(final Promise promise){
    ...
    promise.resolve("username");
}
...
let username = await NativeModules.GetInfo.getUsername();