
前言Worker是 HarmonyOS 中用于创建独立线程的解决方案。与 taskpool 的动态提交不同Worker 是一个常驻后台线程适合长时间运行的密集型任务。一、Worker 创建// main.ets — 主线程constworkernewWorker(entry/ets/workers/GameWorker.ets);worker.onmessage(event){console.info(Worker 返回:${event.data});};worker.postMessage({type:compute,data:{score:100,cats:[]}});// GameWorker.ets — Worker 线程import{WorkerPool,MessageEvents}fromkit.ArkTS;constworkerPoolnewWorkerPool();workerPool.onmessage(event){const{type,data}event.data;if(typecompute){// 耗时计算constresultheavyComputation(data);workerPool.postMessage(result);}};functionheavyComputation(data:object):number{// 模拟耗时的游戏计算return42;}二、Worker vs taskpool特性Workertaskpool生命周期常驻临时创建方式独立文件Concurrent 函数通信方式postMessage返回值适用场景持续运行单次任务复杂度高需要管理生命周期低三、游戏中的应用// 使用 Worker 做后台自动存档classSaveWorker{privateworker:Worker;constructor(){this.workernewWorker(entry/ets/workers/SaveWorker.ets);this.worker.onmessage(e){console.info(保存结果:${e.data});};}save(score:number,cats:Cat[]):void{this.worker.postMessage({type:save,data:{score,timestamp:Date.now()}});}destroy():void{this.worker.terminate();}}四、限制独立文件Worker 代码必须放在独立.ets文件中无法访问 UI不能操作 DOM 或 State消息传递通过结构化克隆传递数据创建开销Worker 创建需要 ~100ms五、最佳实践长时间任务用 Worker持续监控、自动存档单次任务用 taskpool计算、文件 I/O用完 terminateworker.terminate()释放资源错误处理worker.onerror捕获异常总结Worker 创建常驻后台线程适合长时间运行的任务。核心要点独立文件创建 Worker、postMessage/onmessage通信、 用完后terminate()释放。如果这篇文章对你有帮助欢迎点赞、收藏⭐、关注你的支持是我持续创作的动力相关资源Worker 官方文档第 144 篇taskpool第 146 篇sendable第 147 篇taskpool-execute