我在java中编写了本机代码来获取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
}
)
答案 0 :(得分:1)
我认为你需要用Promise处理它。将方法签名更改为
public void getUsername(final Promise promise){
...
promise.resolve("username");
}
并在您的javascript中
...
let username = await NativeModules.GetInfo.getUsername();