WebView的javaScriptProxy如何异步调用 HarmonyOS 鸿蒙Next

发布于 1周前 作者 sinazl 来自 鸿蒙OS

WebView的javaScriptProxy如何异步调用 HarmonyOS 鸿蒙Next

RT.

同步方法亲测可行;

异步调用无法获取结果 … 

尝试 Promise 也不可行 …

求解

4 回复

这个有尝试,交互中加入 request 请求异步后,return 就无效了, return 优先级 高于了 request …

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。

回到顶部