如何从javareturn数据到java脚本?

How to return data from java to javascript?

我在 java 中编写了本机代码来获取 gmail 帐户的帐户信息。

虽然只是从第一种方法返回,但我在 java 脚本中变得不确定。在第二种方法中,我通过回调将电子邮件地址返回给 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();