HarmonyOS 鸿蒙Next Stage模型,使用worker耗时操作写在哪里?另外用js写的worker,向主线程发message,显示为onmessage:[object Object]

HarmonyOS 鸿蒙Next Stage模型,使用worker耗时操作写在哪里?另外用js写的worker,向主线程发message,显示为onmessage:[object Object] 按照文档:https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/itc-with-worker-0000001382209802-V3

在DevEco studio 3.1运行了下,碰到了问题,有例子给看下吗?多谢!!!


更多关于HarmonyOS 鸿蒙Next Stage模型,使用worker耗时操作写在哪里?另外用js写的worker,向主线程发message,显示为onmessage:[object Object]的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

我也遇到了类似的问题,我的报错是

[worker.cpp(CallWorkerFunction)] worker:: WorkerGlobalScope onmessage is not Callable
[worker.cpp(WorkerOnMessageInner)] worker:: call WorkerGlobalScope onmessage error

感觉可能是worker文件路径的问题

更多关于HarmonyOS 鸿蒙Next Stage模型,使用worker耗时操作写在哪里?另外用js写的worker,向主线程发message,显示为onmessage:[object Object]的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next Stage模型中,如果你需要在worker中进行耗时操作,这些操作应当被放置在worker的脚本文件中。Worker是独立于主线程运行的,因此适合执行那些可能阻塞主线程或需要较长时间完成的任务。

关于使用JavaScript编写的worker向主线程发送消息时显示为onmessage:[object Object]的问题,这通常是因为在发送消息时,对象没有被正确地序列化为字符串或其他可传输的格式。在JavaScript的worker中,当你发送一个对象时,它实际上是以结构化克隆算法传输的,但接收端在打印或处理时可能默认将其转换为[object Object]字符串。

要解决这个问题,你可以在发送消息前,将对象转换为JSON字符串。例如,在worker中:

self.postMessage(JSON.stringify(yourObject));

然后在主线程中,接收消息并解析JSON字符串:

worker.onmessage = function(event) {
    var obj = JSON.parse(event.data);
    console.log(obj);
};

这样,你就可以在主线程中正确地看到发送的对象内容了。

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

回到顶部