具体可参考如下示例代码:
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"
]
}
}