鸿蒙5.0开发【如何在Worker中开启多级子线程】应用运维

具体可参考如下示例代码:

import { ErrorEvent, MessageEvents, worker } from '@kit.ArkTS';


const workerInstance = new worker.ThreadWorker('entry/ets/pages/Worker.ets');


// 主线程向worker线程传递信息
workerInstance.postMessage('123');


// 主线程接收worker线程信息
workerInstance.onmessage = (e: MessageEvents): void => {
  // data:worker线程发送的信息
  let data: string = e.data;
  console.info(`main thread onmessage, data:${data}`);
  const workerInstance1 = new worker.ThreadWorker('entry/ets/pages/Work.ets');
  workerInstance1.postMessage('123');
  workerInstance1.onmessage = (e: MessageEvents): void => {
    // data:worker线程发送的信息
    let data1: string = e.data;
    console.info(`main thread onmessage1, data:${data1}`);
    // 销毁Worker对象
    workerInstance1.terminate();
  }
  // 在调用terminate后,执行onexit
  workerInstance1.onexit = (code) => {
    console.info(`main thread terminate, code:${code}`);
  }
  // 销毁Worker对象
  workerInstance.terminate();


}
// 在调用terminate后,执行onexit
workerInstance.onexit = (code) => {
  console.info(`main thread terminate, code:${code}`);
}


workerInstance.onerror = (err: ErrorEvent) => {
  console.error('main error message ' + err.message);
}
// Work.ets & Worker.ets
import { ErrorEvent, MessageEvents, worker } from '@kit.ArkTS';


// 创建worker线程中与主线程通信的对象
const workerPort = worker.workerPort;


// worker线程接收主线程信息
workerPort.onmessage = (e: MessageEvents): void => {
  // data:主线程发送的信息
  let data: string = e.data;
  console.info(`Work.ets onmessage: data ${data}`);


  // worker线程向主线程发送信息
  workerPort.postMessage('123');
}


// worker线程发生error的回调
workerPort.onerror = (err: ErrorEvent) => {
  console.info('worker.ets onerror' + err.message);
}
// 模块级 build.profile.json5
"buildOption": {
  "sourceOption": {
    "workers": [
      "./src/main/ets/pages/Worker.ets",
      "./src/main/ets/pages/Work.ets"
    ]
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值