如何将数据从java返回到javascript?
我用java编写本机代码来获取gmail帐户的帐户信息 当从第一个方法返回时,我在javascript中没有定义。在第二种方法中,我通过回调js返回电子邮件地址,这非常有效 第一种方法:- java代码:- RN侧:-如何将数据从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代码:- 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();