我正在使用 React Native 的 Native Modules 检索 google fit 数据。
逻辑工作正常,我得到了我的预期结果。
问题在于检索延迟。
我在我的应用程序上单击一个按钮,它调用 Native Module 方法,如下所示
.js 文件:
click = async() => {
await NativeModules.MyHealth.getHealthData((err ,result) => {
let res = JSON.parse(result)
let unique = _.uniqWith(res?.HealthData, _.isEqual);
this.setState({hd: [...unique], full: true})
console.log("HD:", this.state.hd) //returns empty for first click. second click i get all the values
});
}
在我的 ReactModule.java
@ReactMethod
public void getHealthData(Callback cb) {
try{
final Activity activity = getCurrentActivity();
if(activity != null && activity instanceof MainActivity){
JSONObject obj = ((MainActivity) activity).getHealthValues(); //main method
cb.invoke(null, String.valueOf(obj));
}
}catch (Exception e){
Log.i("error", "error here!!!!");
cb.invoke(e.toString(), null);
}
}
MainActivity.java
public JSONObject getHealthValues() {
readHistoryData(); //runs my Fitness.getHistoryClient query
return json;
}
我试图弄清楚为什么数据不会通过第一次点击流入前端 js 文件。但随后我通过第二次点击获得数据。
有人对这种行为有任何线索吗?