HarmonyOS 鸿蒙Next weex项目中使用的WebSceneKitHsp如何直接返回原生端方法的值,而不是使用callback

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

HarmonyOS 鸿蒙Next weex项目中使用的WebSceneKitHsp如何直接返回原生端方法的值,而不是使用callback

目前weex项目中使用的WebSceneKitHsp在weex端调用原生端的方法为:registerCustomFun,必须使用callback来处理返回的值,如何直接返回原生端方法的值,而不是使用callback?

目前是这样的: 

/* H5端执行自定义方法调用 */
let name = ‘testFunc’;
let args = { data: ‘test data’ }
let callback =
(result) => { // result类型解析由ArkTs端决定
console.log('get result type: ’ + result[‘type’]);
console.log('get result data: ’ + result[‘data’]);
}
native.run(name, args, callback)<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>
期望可以有这样的: 
let data = native.run(name, args)<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

2 回复
可参考以下文档,原生端javaScriptProxy()注册testObjName调用方法后,前端可使用let str = testObjName.test();获取回调

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/web-in-page-app-function-invoking-0000001891868257-V5

在HarmonyOS鸿蒙Next weex项目中,若想在WebSceneKitHsp中直接返回原生端方法的值而非使用callback,你可以考虑以下技术实现方式:

WebSceneKitHsp与原生端交互时,通常通过桥接机制完成。若要实现直接返回值,需确保WebSceneKitHsp支持同步调用原生方法,并能在执行完毕后立即返回结果。这通常涉及到对JavaScript引擎与原生代码接口的深度定制。

一种可能的实现思路是:

  1. 扩展WebSceneKitHsp接口:在WebSceneKitHsp的JavaScript接口中,新增一个同步调用原生方法的接口。
  2. 原生方法改造:将需要调用的原生方法改造成可以立即返回结果的同步方法(注意线程安全与性能问题)。
  3. 结果传递:通过WebSceneKitHsp的接口,将原生方法的结果直接返回给JavaScript端。

但请注意,直接同步返回结果可能会影响应用的响应性和性能,特别是在涉及复杂计算或I/O操作时。因此,在设计时务必权衡同步与异步调用的利弊。

此外,由于具体实现可能因HarmonyOS版本、WebSceneKitHsp版本及项目配置不同而有所差异,上述方法仅供参考。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部