HarmonyOS鸿蒙Next中javaScriptProxy同时间处理多个(比如40个)接口调用会卡住

HarmonyOS鸿蒙Next中javaScriptProxy同时间处理多个(比如40个)接口调用会卡住 项目主要是webview搭载使用

基础功能:原生向webview注入js,然后webview调用js方法向原生发送请求,原生调用网络接口回调数据给webview进行渲染。

相关技术:

HttpRequest网络搭建 Promise async await这几个来处理异步

场景:打开webview首页,该webview首页会发送40个请求

问题:打开后,这时候首页会卡住很久,需要等这40个请求回调结束后,首页才能进行操作

想要的解决方式,如何像Android一样(因为Android App是一样步骤处理的,不同的是Android请求接口是用异步线程,鸿蒙这个我用Promise async await不知道算不算)处理以上场景不会卡住UI?


更多关于HarmonyOS鸿蒙Next中javaScriptProxy同时间处理多个(比如40个)接口调用会卡住的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

异步请求不会阻塞主线程,异步请求调用后立即结束,该请求的连接和通信过程是由子线程完成的。原生http创建的请求会由线程池承接,分派给多个子线程轮流完成。响应回来后会自动调用主线程生成异步请求时注册的回调函数。

更多关于HarmonyOS鸿蒙Next中javaScriptProxy同时间处理多个(比如40个)接口调用会卡住的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,JavaScriptProxy用于在JavaScript和Native代码之间进行通信。当同时处理多个接口调用(如40个)时,可能会出现卡顿现象。这通常是由于JavaScript的单线程特性导致的,尤其是在处理大量异步任务时,可能会阻塞主线程。

鸿蒙Next的JavaScript引擎在处理多个接口调用时,可能会因为任务队列的堆积而导致性能下降。每个接口调用都会生成一个任务,这些任务会被放入事件队列中等待执行。如果任务数量过多,事件队列的处理速度可能跟不上任务的生成速度,从而导致卡顿。

此外,JavaScriptProxy的底层实现可能涉及到跨语言调用,这也会增加一定的开销。如果多个接口调用同时进行,跨语言调用的开销可能会进一步加剧性能问题。

要解决这个问题,可以考虑优化接口调用的频率,或者将多个接口调用合并为一个批量调用,以减少任务队列的堆积。另外,可以使用Web Workers或其他多线程技术来分担主线程的压力,从而提高整体性能。

总之,在鸿蒙Next中,JavaScriptProxy同时处理多个接口调用时可能会卡住,主要是由于JavaScript的单线程特性和任务队列的堆积导致的。通过优化调用方式和引入多线程技术,可以有效缓解这一问题。

在HarmonyOS鸿蒙Next中,使用JavaScript Proxy同时处理多个接口调用(如40个)可能会导致性能问题,甚至卡住。这是因为JavaScript是单线程的,大量并发请求会阻塞事件循环。建议采用以下优化方案:

  1. 分批处理:将40个接口调用分成多个批次,每批处理5-10个,使用Promise.all确保每批完成后再处理下一批。
  2. 异步优化:使用async/await确保每个接口调用异步执行,避免阻塞主线程。
  3. Web Workers:将密集的接口调用任务放到Web Workers中执行,避免影响主线程性能。
  4. 节流/防抖:对频繁的接口调用进行节流或防抖处理,减少不必要的请求。

通过这些方法可以有效避免卡顿问题。

回到顶部