WebView的javaScriptProxy如何异步调用 HarmonyOS 鸿蒙Next
WebView的javaScriptProxy如何异步调用 HarmonyOS 鸿蒙Next
RT.
同步方法亲测可行;
异步调用无法获取结果 …
尝试 Promise 也不可行 …
求解
getTestDataAsync = async (input: string): Promise<string> => { console.info(‘输入数据:’, input); const preferences = await dataPreferences.getPreferences(this.context, ‘DATA_STORE’); const value = await preferences.get(‘KEY’, ‘默认值’); console.info(‘读取到的值:’, value); const resultMap = new Map<string, string>(); resultMap[input] = value; return JSON.stringify(resultMap); }
上面代码里,把 const value = await preferences.get(‘KEY’, ‘默认值’); 改成 const value = await request异步请求
不行吗?
在HarmonyOS(鸿蒙)的WebView组件中,实现JavaScriptProxy的异步调用通常涉及在JavaScript端调用一个方法,该方法在Java/Kotlin侧有相应的代理实现。为了实现异步,你可以在Java/Kotlin端的方法中使用线程(如AsyncTask, HandlerThread, 或Kotlin的Coroutine)来执行耗时操作,并在操作完成后通过WebView的evaluateJavascript方法将结果传回JavaScript端。
确保WebView的JavaScript接口已经正确设置并注册,然后在JavaScriptProxy的方法中处理异步逻辑。如果问题依旧没法解决请加我微信,我的微信是itying888。