diff --git a/zh-cn/application-dev/reference/apis/js-apis-worker.md b/zh-cn/application-dev/reference/apis/js-apis-worker.md
index 5d1ffcb5c93d07f308505ff2c0de219101ddc49c..483a26e968c80663a800b432589434dd0e4440c9 100644
--- a/zh-cn/application-dev/reference/apis/js-apis-worker.md
+++ b/zh-cn/application-dev/reference/apis/js-apis-worker.md
@@ -16,9 +16,10 @@ import worker from '@ohos.worker';
**系统能力:** SystemCapability.Utils.Lang
-| 名称 | 参数类型 | 可读 | 可写 | 说明 |
-| ---------- | --------------------------------------------------------- | ---- | ---- | ------------------------------------ |
-| parentPort | [DedicatedWorkerGlobalScope](#dedicatedworkerglobalscope) | 是 | 是 | worker线程用于与宿主线程通信的对象。 |
+| 名称 | 参数类型 | 可读 | 可写 | 说明 |
+| --------------------------------- | --------------------------------------------------------- | ---- | ---- | ------------------------------------------------------------ |
+| workerPort9+ | [ThreadWorkerGlobalScope](#threadworkerglobalscope9) | 是 | 是 | worker线程用于与宿主线程通信的对象。 |
+| parentPort(deprecated) | [DedicatedWorkerGlobalScope](#dedicatedworkerglobalscope) | 是 | 是 | worker线程用于与宿主线程通信的对象。
此属性从api9开始被废弃,建议使用workerPort9+。 |
## WorkerOptions
@@ -27,17 +28,641 @@ Worker构造函数的选项信息,用于为Worker添加其他信息。
**系统能力:** SystemCapability.Utils.Lang
-| 名称 | 参数类型 | 可读 | 可写 | 说明 |
-| ------ | --------- | ---- | ---- | ---------------------- |
-| name | string | 是 | 是 | Worker的名称。 |
+| 名称 | 参数类型 | 可读 | 可写 | 说明 |
+| ---- | -------- | ---- | ---- | -------------- |
+| name | string | 是 | 是 | Worker的名称。 |
-## Worker
+## ThreadWorker9+
+
+使用以下方法前,均需先构造Worker实例,Worker类继承[WorkerEventTarget](#workereventtarget9)。
+
+### constructor9+
+
+constructor(scriptURL: string, options?: WorkerOptions)
+
+Worker构造函数。
+
+**系统能力:** SystemCapability.Utils.Lang
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| --------- | ------------------------------- | ---- | ------------------------------------------------------------ |
+| scriptURL | string | 是 | Worker执行脚本的路径。
在FA和Stage模型下,DevEco Studio新建Worker工程路径分别存在以下两种情况:
(a) worker脚本所在目录与pages目录同级。
(b) worker脚本所在目录与pages目录不同级。 |
+| options | [WorkerOptions](#workeroptions) | 否 | Worker构造的选项。 |
+
+**返回值:**
+
+| 类型 | 说明 |
+| ------ | --------------------------------------------------------- |
+| Worker | 执行Worker构造函数生成的Worker对象,失败则返回undefined。 |
+
+**示例:**
+
+```js
+import worker from '@ohos.worker';
+// worker线程创建
+
+// FA模型-目录同级
+const workerFAModel01 = new worker.ThreadWorker("workers/worker.js", {name:"first worker in FA model"});
+// FA模型-目录不同级(以workers目录放置pages目录前一级为例)
+const workerFAModel02 = new worker.ThreadWorker("../workers/worker.js");
+
+// Stage模型-目录同级
+const workerStageModel01 = new worker.ThreadWorker('entry/ets/workers/worker.ts', {name:"first worker in Stage model"});
+// Stage模型-目录不同级(以workers目录放置pages目录后一级为例)
+const workerStageModel02 = new worker.ThreadWorker('entry/ets/pages/workers/worker.ts');
+
+// 理解Stage模型scriptURL的"entry/ets/workers/worker.ts":
+// entry: 为module.json5文件中module的name属性对应的值;
+// ets: 表明当前使用的语言。
+```
+
+同时,需在工程的模块级build-profile.json5文件的buildOption属性中添加配置信息,主要分为下面两种情况:
+
+(1) 目录同级
+
+FA模型:
+
+```json
+ "buildOption": {
+ "sourceOption": {
+ "workers": [
+ "./src/main/ets/MainAbility/workers/worker.ts"
+ ]
+ }
+ }
+```
+
+Stage模型:
+
+```json
+ "buildOption": {
+ "sourceOption": {
+ "workers": [
+ "./src/main/ets/workers/worker.ts"
+ ]
+ }
+ }
+```
+
+(2) 目录不同级
+
+FA模型:
+
+```json
+ "buildOption": {
+ "sourceOption": {
+ "workers": [
+ "./src/main/ets/workers/worker.ts"
+ ]
+ }
+ }
+```
+
+Stage模型:
+
+```json
+ "buildOption": {
+ "sourceOption": {
+ "workers": [
+ "./src/main/ets/pages/workers/worker.ts"
+ ]
+ }
+ }
+```
+
+
+### postMessage9+
+
+postMessage(message: Object, options?: PostMessageOptions): void
+
+向Worker线程发送数据,数据类型必须是序列化所支持的类型。序列化支持类型见其他说明。
+
+**系统能力:** SystemCapability.Utils.Lang
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| ------- | ----------------------------------------- | ---- | ------------------------------------------------------------ |
+| message | Object | 是 | 发送至Worker的数据。 |
+| options | [PostMessageOptions](#postmessageoptions) | 否 | 可转移对象是 ArrayBuffer 的实例对象。transferList数组中不可传入null。 |
+
+**示例:**
+
+```js
+const workerInstance = new worker.ThreadWorker("workers/worker.js");
+
+workerInstance.postMessage("hello world");
+
+var buffer = new ArrayBuffer(8);
+workerInstance.postMessage(buffer, [buffer]);
+```
+
+
+### on9+
+
+on(type: string, listener: WorkerEventListener): void
+
+向Worker添加一个事件监听。
+
+**系统能力:** SystemCapability.Utils.Lang
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| -------- | -------------------------------------------- | ---- | ---------------------- |
+| type | string | 是 | 监听的事件类型。 |
+| listener | [WorkerEventListener](#workereventlistener9) | 是是 | 回调的事件。回调事件。 |
+
+**示例:**
+
+```js
+const workerInstance = new worker.ThreadWorker("workers/worker.js");
+workerInstance.on("alert", (e)=>{
+ console.log("alert listener callback");
+})
+```
+
+
+### once9+
+
+once(type: string, listener: WorkerEventListener): void
+
+向Worker添加一个事件监听,事件监听只执行一次便自动删除。
+
+**系统能力:** SystemCapability.Utils.Lang
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| -------- | -------------------------------------------- | ---- | ---------------------- |
+| type | string | 是 | 监听的事件类型。 |
+| listener | [WorkerEventListener](#workereventlistener9) | 是是 | 回调的事件。回调事件。 |
+
+**示例:**
+
+```js
+const workerInstance = new worker.ThreadWorker("workers/worker.js");
+workerInstance.once("alert", (e)=>{
+ console.log("alert listener callback");
+})
+```
+
+
+### off9+
+
+off(type: string, listener?: WorkerEventListener): void
+
+删除类型为type的事件监听。
+
+**系统能力:** SystemCapability.Utils.Lang
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| -------- | -------------------------------------------- | ---- | ---------------------------- |
+| type | string | 是 | 需要删除的事件类型。 |
+| listener | [WorkerEventListener](#workereventlistener9) | 是否 | 回调的事件。删除的回调事件。 |
+
+**示例:**
+
+```js
+const workerInstance = new worker.ThreadWorker("workers/worker.js");
+workerInstance.off("alert");
+```
+
+
+### terminate9+
+
+terminate(): void
+
+销毁Worker线程,终止Worker接收消息。
+
+**系统能力:** SystemCapability.Utils.Lang
+
+**示例:**
+
+```js
+const workerInstance = new worker.ThreadWorker("workers/worker.js");
+workerInstance.terminate();
+```
+
+
+### onexit9+
+
+onexit?: (code: number) => void
+
+Worker对象的onexit属性表示Worker销毁时被调用的事件处理程序,处理程序在宿主线程中执行。
+
+**系统能力:** SystemCapability.Utils.Lang
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| ------ | ------ | ---- | ------------------ |
+| code | number | 否 | Worker退出的code。 |
+
+**示例:**
+
+```js
+const workerInstance = new worker.ThreadWorker("workers/worker.js");
+workerInstance.onexit = function(e) {
+ console.log("onexit");
+}
+```
+
+
+### onerror9+
+
+onerror?: (err: ErrorEvent) => void
+
+Worker对象的onerror属性表示Worker在执行过程中发生异常被调用的事件处理程序,处理程序在宿主线程中执行。
+
+**系统能力:** SystemCapability.Utils.Lang
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| ------ | ------------------------- | ---- | ---------- |
+| err | [ErrorEvent](#errorevent) | 否 | 异常数据。 |
+
+**示例:**
+
+```js
+const workerInstance = new worker.ThreadWorker("workers/worker.js");
+workerInstance.onerror = function(e) {
+ console.log("onerror");
+}
+```
+
+
+### onmessage9+
+
+onmessage?: (event: MessageEvent\) => void
+
+Worker对象的onmessage属性表示宿主线程接收到来自其创建的Worker通过parentPort.postMessage接口发送的消息时被调用的事件处理程序,处理程序在宿主线程中执行。
+
+**系统能力:** SystemCapability.Utils.Lang
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| ------ | ----------------------------- | ---- | ---------------------- |
+| event | [MessageEvent](#messageevent) | 否 | 收到的Worker消息数据。 |
+
+**示例:**
+
+```js
+const workerInstance = new worker.ThreadWorker("workers/worker.js");
+workerInstance.onmessage = function(e) {
+ // e : MessageEvent, 用法如下:
+ // let data = e.data;
+ console.log("onmessage");
+}
+```
+
+
+### onmessageerror9+
+
+onmessageerror?: (event: MessageEvent\) => void
+
+Worker对象的onmessageerror属性表示当Worker对象接收到一条无法被序列化的消息时被调用的事件处理程序,处理程序在宿主线程中执行。
+
+**系统能力:** SystemCapability.Utils.Lang
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| ------ | ----------------------------- | ---- | ---------- |
+| event | [MessageEvent](#messageevent) | 否 | 异常数据。 |
+
+**示例:**
+
+```js
+const workerInstance = new worker.ThreadWorker("workers/worker.js");
+workerInstance.onmessageerror= function(e) {
+ console.log("onmessageerror");
+}
+```
+
+
+## WorkerEventTarget9+
+
+### addEventListener9+
+
+addEventListener(type: string, listener: WorkerEventListener): void
+
+向Worker添加一个事件监听。
+
+**系统能力:** SystemCapability.Utils.Lang
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| -------- | -------------------------------------------- | ---- | ---------------- |
+| type | string | 是 | 监听的事件类型。 |
+| listener | [WorkerEventListener](#workereventlistener9) | 是 | 回调的事件。 |
+
+**示例:**
+
+```js
+const workerInstance = new worker.ThreadWorker("workers/worker.js");
+workerInstance.addEventListener("alert", (e)=>{
+ console.log("alert listener callback");
+})
+```
+
+
+### removeEventListener9+
+
+removeEventListener(type: string, callback?: WorkerEventListener): void
+
+删除Worker的事件监听。
+
+**系统能力:** SystemCapability.Utils.Lang
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| -------- | -------------------------------------------- | ---- | ---------------------------- |
+| type | string | 是 | 需要删除的监听事件类型。 |
+| callback | [WorkerEventListener](#workereventlistener9) | 是否 | 回调的事件。删除的回调事件。 |
+
+**示例:**
+
+```js
+const workerInstance = new worker.ThreadWorker("workers/worker.js");
+workerInstance.removeEventListener("alert");
+```
-使用以下方法前,均需先构造Worker实例,Worker类继承[EventTarget](#eventtarget)。
+### dispatchEvent9+
-### constructor
+dispatchEvent(event: Event): boolean
+
+分发定义在Worker的事件。
+
+**系统能力:** SystemCapability.Utils.Lang
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| ------ | --------------- | ---- | ---------------- |
+| event | [Event](#event) | 是 | 需要分发的事件。 |
+
+**返回值:**
+
+| 类型 | 说明 |
+| ------- | ------------------------------- |
+| boolean | 分发的结果,false表示分发失败。 |
+
+**示例:**
+
+```js
+const workerInstance = new worker.ThreadWorker("workers/worker.js");
+workerInstance.dispatchEvent({type:"alert"});
+```
+
+
+### removeAllListener9+
+
+removeAllListener(): void
+
+删除Worker所有的事件监听。
+
+**系统能力:** SystemCapability.Utils.Lang
+
+**示例:**
+
+```js
+const workerInstance = new worker.ThreadWorker("workers/worker.js");
+workerInstance.removeAllListener();
+```
+
+
+## ThreadWorkerGlobalScope9+
+
+Worker线程用于与宿主线程通信的类,通过postMessage接口发送消息给宿主线程、close接口销毁Worker线程。DedicatedWorkerGlobalScope类继承[GlobalScope9+](#globalscope9)。
+
+
+### postMessage9+
+
+postMessage(messageObject: Object, options?: PostMessageOptions): void
+
+Worker线程向宿主线程发送消息。
+
+**系统能力:** SystemCapability.Utils.Lang
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| ------- | ----------------------------------------- | ---- | ------------------------------------------------------------ |
+| message | Object | 是 | 发送至宿主线程的数据。 |
+| options | [PostMessageOptions](#postmessageoptions) | 否 | 可转移对象是ArrayBuffer的实例对象。transferList数组中不可传入null。 |
+
+**示例:**
+
+```js
+// main.js
+import worker from '@ohos.worker';
+const workerInstance = new worker.ThreadWorker("workers/worker.js");
+workerInstance.postMessage("hello world");
+workerInstance.onmessage = function(e) {
+ // let data = e.data;
+ console.log("receive data from worker.js");
+}
+```
+
+```js
+// worker.js
+import worker from '@ohos.worker';
+const parentPort = worker.workerPort;
+parentPort.onmessage = function(e){
+ // let data = e.data;
+ parentPort.postMessage("receive data from main.js");
+}
+```
+
+
+### close9+
+
+close(): void
+
+销毁Worker线程,终止Worker接收消息。
+
+**系统能力:** SystemCapability.Utils.Lang
+
+**示例:**
+
+```js
+// main.js
+import worker from '@ohos.worker';
+const workerInstance = new worker.ThreadWorker("workers/worker.js");
+```
+
+```js
+// worker.js
+import worker from '@ohos.worker';
+const parentPort = worker.workerPort;
+parentPort.onmessage = function(e) {
+ parentPort.close()
+}
+```
+
+
+### onmessage9+
+
+onmessage?: (event: MessageEvent\) => void
+
+DedicatedWorkerGlobalScope的onmessage属性表示Worker线程收到来自其宿主线程通过postMessage接口发送的消息时被调用的事件处理程序,处理程序在Worker线程中执行。
+
+**系统能力:** SystemCapability.Utils.Lang
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| ------ | ----------------------------- | ---- | ------------------------ |
+| event | [MessageEvent](#messageevent) | 否 | 收到宿主线程发送的数据。 |
+
+**示例:**
+
+```js
+// main.js
+import worker from '@ohos.worker';
+const workerInstance = new worker.ThreadWorker("workers/worker.js");
+workerInstance.postMessage("hello world");
+```
+
+```js
+// worker.js
+import worker from '@ohos.worker';
+const parentPort = worker.workerPort;
+parentPort.onmessage = function(e) {
+ console.log("receive main.js message");
+}
+```
+
+
+### onmessageerror9+
+
+onmessageerror?: (event: MessageEvent\) => void
+
+DedicatedWorkerGlobalScope的onmessageerror属性表示当Worker对象接收到一条无法被反序列化的消息时被调用的事件处理程序,处理程序在Worker线程中执行。
+
+**系统能力:** SystemCapability.Utils.Lang
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| ------ | ----------------------------- | ---- | ---------- |
+| event | [MessageEvent](#messageevent) | 否 | 异常数据。 |
+
+**示例:**
+
+```js
+// main.js
+import worker from '@ohos.worker';
+const workerInstance = new worker.ThreadWorker("workers/worker.js");
+```
+
+```js
+// worker.js
+import worker from '@ohos.worker';
+const parentPort = worker.workerPort;
+parentPort.onmessageerror= function(e) {
+ console.log("worker.js onmessageerror")
+}
+```
+
+
+## WorkerEventListener9+
+
+(event: Event): void | Promise<void>
+
+事件监听类。
+
+**系统能力:** SystemCapability.Utils.Lang
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| ------ | --------------- | ---- | -------------- |
+| event | [Event](#event) | 是 | 回调的事件类。 |
+
+**返回值:**
+
+| 类型 | 说明 |
+| ------------------------------------- | ------------------------------- |
+| void \| Promise<void> | 无返回值或者以Promise形式返回。 |
+
+**示例:**
+
+```js
+const workerInstance = new worker.ThreadWorker("workers/worker.js");
+workerInstance.addEventListener("alert", (e)=>{
+ console.log("alert listener callback");
+})
+```
+
+
+## GlobalScope9+
+
+Worker线程自身的运行环境,WorkerGlobalScope类继承[WorkerEventTarget](#workereventtarget9)。
+
+### 属性
+
+**系统能力:** SystemCapability.Utils.Lang
+
+| 名称 | 参数类型 | 可读 | 可写 | 说明 |
+| ---- | ------------------------------------------------------------ | ---- | ---- | ------------------------------------- |
+| name | string | 是 | 否 | Worker的名字,new Worker时指定。 |
+| self | [GlobalScope](#globalscope9) & typeof globalThis | 是 | 否 | GlobalScope本身。 |
+
+
+### onerror9+
+
+onerror?: (ev: ErrorEvent) => void
+
+GlobalScope的onerror属性表示Worker在执行过程中发生异常被调用的事件处理程序,处理程序在Worker线程中执行。
+
+**系统能力:** SystemCapability.Utils.Lang
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| ------ | ------------------------- | ---- | ---------- |
+| ev | [ErrorEvent](#errorevent) | 否 | 异常数据。 |
+
+**示例:**
+
+```js
+// main.js
+import worker from '@ohos.worker';
+const workerInstance = new worker.ThreadWorker("workers/worker.js")
+```
+
+```js
+// worker.js
+import worker from '@ohos.worker';
+const parentPort = worker.workerPort
+parentPort.onerror = function(e){
+ console.log("worker.js onerror")
+}
+```
+
+
+## Worker(deprecated)
+
+> **说明:**
+> 从API version 9开始废弃,建议使用[ThreadWorker9+](#threadworker9)替代。
+
+使用以下方法前,均需先构造Worker实例,Worker类继承[EventTarget](#eventtarget)。
+
+### constructor(deprecated)
+> **说明:**
+> 从API version 9开始废弃,建议使用[ThreadWorker.constructor9+](#constructor9)替代。
constructor(scriptURL: string, options?: WorkerOptions)
@@ -49,7 +674,7 @@ Worker构造函数。
| 参数名 | 类型 | 必填 | 说明 |
| --------- | ------------------------------- | ---- | ------------------------------------------------------------ |
-| scriptURL | string | 是 | Worker执行脚本的路径。
在FA和Stage模型下,DevEco Studio新建Worker工程路径分别存在以下两种情况:
(a) worker脚本所在目录与pages目录同级。
(b) worker脚本所在目录与pages目录不同级。
+| scriptURL | string | 是 | Worker执行脚本的路径。
在FA和Stage模型下,DevEco Studio新建Worker工程路径分别存在以下两种情况:
(a) worker脚本所在目录与pages目录同级。
(b) worker脚本所在目录与pages目录不同级。 |
| options | [WorkerOptions](#workeroptions) | 否 | Worker构造的选项。 |
**返回值:**
@@ -125,7 +750,10 @@ Stage模型:
}
}
```
-### postMessage
+### postMessage(deprecated)
+
+> **说明:**
+> 从API version 9开始废弃,建议使用[ThreadWorker.postMessage9+](#postmessage9)替代。
postMessage(message: Object, options?: PostMessageOptions): void
@@ -152,7 +780,10 @@ workerInstance.postMessage(buffer, [buffer]);
```
-### on
+### on(deprecated)
+
+> **说明:**
+> 从API version 9开始废弃,建议使用[ThreadWorker.on9+](#on9)替代。
on(type: string, listener: EventListener): void
@@ -165,7 +796,7 @@ on(type: string, listener: EventListener): void
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------------- | ---- | ---------------- |
| type | string | 是 | 监听的事件类型。 |
-| listener | [EventListener](#eventlistener) | 是 | 回调事件。 |
+| listener | [EventListener](#eventlistener) | 是 | 回调事件。 |
**示例:**
@@ -177,7 +808,10 @@ workerInstance.on("alert", (e)=>{
```
-### once
+### once(deprecated)
+
+> **说明:**
+> 从API version 9开始废弃,建议使用[ThreadWorker.once9+](#once9)替代。
once(type: string, listener: EventListener): void
@@ -190,7 +824,7 @@ once(type: string, listener: EventListener): void
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------------- | ---- | ---------------- |
| type | string | 是 | 监听的事件类型。 |
-| listener | [EventListener](#eventlistener) | 是 | 回调事件。 |
+| listener | [EventListener](#eventlistener) | 是 | 回调事件。 |
**示例:**
@@ -202,7 +836,10 @@ workerInstance.once("alert", (e)=>{
```
-### off
+### off(deprecated)
+
+> **说明:**
+> 从API version 9开始废弃,建议使用[ThreadWorker.off9+](#off9)替代。
off(type: string, listener?: EventListener): void
@@ -212,10 +849,10 @@ off(type: string, listener?: EventListener): void
**参数:**
-| 参数名 | 类型 | 必填 | 说明 |
-| -------- | ------------------------------- | ---- | ---------------------- |
-| type | string | 是 | 需要删除的事件类型。 |
-| listener | [EventListener](#eventlistener) | 否 | 删除的回调事件。 |
+| 参数名 | 类型 | 必填 | 说明 |
+| -------- | ------------------------------- | ---- | -------------------- |
+| type | string | 是 | 需要删除的事件类型。 |
+| listener | [EventListener](#eventlistener) | 否 | 删除的回调事件。 |
**示例:**
@@ -225,7 +862,10 @@ workerInstance.off("alert");
```
-### terminate
+### terminate(deprecated)
+
+> **说明:**
+> 从API version 9开始废弃,建议使用[ThreadWorker.terminate9+](#terminate9)替代。
terminate(): void
@@ -241,7 +881,10 @@ workerInstance.terminate();
```
-### onexit
+### onexit(deprecated)
+
+> **说明:**
+> 从API version 9开始废弃,建议使用[ThreadWorker.onexit9+](#onexit9)替代。
onexit?: (code: number) => void
@@ -265,7 +908,10 @@ workerInstance.onexit = function(e) {
```
-### onerror
+### onerror(deprecated)
+
+> **说明:**
+> 从API version 9开始废弃,建议使用[ThreadWorker.onerror9+](#onerror9)替代。
onerror?: (err: ErrorEvent) => void
@@ -289,7 +935,10 @@ workerInstance.onerror = function(e) {
```
-### onmessage
+### onmessage(deprecated)
+
+> **说明:**
+> 从API version 9开始废弃,建议使用[ThreadWorker.onmessage9+](#onmessage9)替代。
onmessage?: (event: MessageEvent\) => void
@@ -315,7 +964,10 @@ workerInstance.onmessage = function(e) {
```
-### onmessageerror
+### onmessageerror(deprecated)
+
+> **说明:**
+> 从API version 9开始废弃,建议使用[ThreadWorker.onmessageerror9+](#onmessageerror9)替代。
onmessageerror?: (event: MessageEvent\) => void
@@ -339,10 +991,14 @@ workerInstance.onmessageerror= function(e) {
```
-## EventTarget
+## EventTarget(deprecated)
+> **说明:**
+> 从API version 9开始废弃,建议使用[WorkerEventTarget9+](#workereventtarget9)替代。
+### addEventListener(deprecated)
-### addEventListener
+> **说明:**
+> 从API version 9开始废弃,建议使用[addEventListener9+](#addeventlistener9)替代。
addEventListener(type: string, listener: EventListener): void
@@ -367,7 +1023,10 @@ workerInstance.addEventListener("alert", (e)=>{
```
-### removeEventListener
+### removeEventListener(deprecated)
+
+> **说明:**
+> 从API version 9开始废弃,建议使用[removeEventListener9+](#removeeventlistener9)替代。
removeEventListener(type: string, callback?: EventListener): void
@@ -377,10 +1036,10 @@ removeEventListener(type: string, callback?: EventListener): void
**参数:**
-| 参数名 | 类型 | 必填 | 说明 |
-| -------- | ------------------------------- | ---- | ---------------------- |
+| 参数名 | 类型 | 必填 | 说明 |
+| -------- | ------------------------------- | ---- | ------------------------ |
| type | string | 是 | 需要删除的监听事件类型。 |
-| callback | [EventListener](#eventlistener) | 否 | 删除的回调事件。 |
+| callback | [EventListener](#eventlistener) | 否 | 删除的回调事件。 |
**示例:**
@@ -390,7 +1049,10 @@ workerInstance.removeEventListener("alert");
```
-### dispatchEvent
+### dispatchEvent(deprecated)
+
+> **说明:**
+> 从API version 9开始废弃,建议使用[dispatchEvent9+](#dispatchevent9)替代。
dispatchEvent(event: Event): boolean
@@ -418,7 +1080,10 @@ workerInstance.dispatchEvent({type:"alert"});
```
-### removeAllListener
+### removeAllListener(deprecated)
+
+> **说明:**
+> 从API version 9开始废弃,建议使用[removeAllListener9+](#removealllistener9)替代。
removeAllListener(): void
@@ -434,12 +1099,18 @@ workerInstance.removeAllListener();
```
-## DedicatedWorkerGlobalScope
+## DedicatedWorkerGlobalScope(deprecated)
+
+> **说明:**
+> 从API version 9开始废弃,建议使用[ThreadWorkerGlobalScope9+](#threadworkerglobalscope9)替代。
Worker线程用于与宿主线程通信的类,通过postMessage接口发送消息给宿主线程、close接口销毁Worker线程。DedicatedWorkerGlobalScope类继承[WorkerGlobalScope](#workerglobalscope)。
-### postMessage
+### postMessage(deprecated)
+
+> **说明:**
+> 从API version 9开始废弃,建议使用[ThreadWorkerGlobalScope9+](#threadworkerglobalscope9).postMessage9+替代。
postMessage(messageObject: Object, options?: PostMessageOptions): void
@@ -451,7 +1122,7 @@ Worker线程向宿主线程发送消息。
| 参数名 | 类型 | 必填 | 说明 |
| ------- | ----------------------------------------- | ---- | ------------------------------------------------------------ |
-| message | Object | 是 | 发送至宿主线程的数据。 |
+| message | Object | 是 | 发送至宿主线程的数据。 |
| options | [PostMessageOptions](#postmessageoptions) | 否 | 可转移对象是ArrayBuffer的实例对象。transferList数组中不可传入null。 |
**示例:**
@@ -477,7 +1148,10 @@ parentPort.onmessage = function(e){
```
-### close
+### close(deprecated)
+
+> **说明:**
+> 从API version 9开始废弃,建议使用[ThreadWorkerGlobalScope9+](#threadworkerglobalscope9).close9+替代。
close(): void
@@ -502,7 +1176,10 @@ parentPort.onmessage = function(e) {
```
-### onmessage
+### onmessage(deprecated)
+
+> **说明:**
+> 从API version 9开始废弃,建议使用[ThreadWorkerGlobalScope9+](#threadworkerglobalscope9).onmessage9+替代。
onmessage?: (event: MessageEvent\) => void
@@ -512,8 +1189,8 @@ DedicatedWorkerGlobalScope的onmessage属性表示Worker线程收到来自其宿
**参数:**
-| 参数名 | 类型 | 必填 | 说明 |
-| ------ | ----------------------------- | ---- | ---------------------- |
+| 参数名 | 类型 | 必填 | 说明 |
+| ------ | ----------------------------- | ---- | ------------------------ |
| event | [MessageEvent](#messageevent) | 否 | 收到宿主线程发送的数据。 |
**示例:**
@@ -534,7 +1211,10 @@ parentPort.onmessage = function(e) {
```
-### onmessageerror
+### onmessageerror(deprecated)
+
+> **说明:**
+> 从API version 9开始废弃,建议使用[ThreadWorkerGlobalScope9+](#threadworkerglobalscope9).onmessageerror9+替代。
onmessageerror?: (event: MessageEvent\) => void
@@ -588,7 +1268,10 @@ parentPort.onmessageerror= function(e) {
| timeStamp | number | 是 | 否 | 事件创建时的时间戳(精度为毫秒)。 |
-## EventListener
+## EventListener(deprecated)
+
+> **说明:**
+> 从API version 9开始废弃,建议使用[WorkerEventListener9+](#workereventlistener9)替代。
(evt: Event): void | Promise<void>
@@ -644,7 +1327,10 @@ workerInstance.addEventListener("alert", (e)=>{
| data | T | 是 | 否 | 线程间传递的数据。 |
-## WorkerGlobalScope
+## WorkerGlobalScope(deprecated)
+
+> **说明:**
+> 从API version 9开始废弃,建议使用[GlobalScope9+](#globalscope9)替代。
Worker线程自身的运行环境,WorkerGlobalScope类继承[EventTarget](#eventtarget)。
@@ -652,13 +1338,16 @@ Worker线程自身的运行环境,WorkerGlobalScope类继承[EventTarget](#eve
**系统能力:** SystemCapability.Utils.Lang
-| 名称 | 参数类型 | 可读 | 可写 | 说明 |
-| ---- | ------------------------------------------------------------ | ---- | ---- | --------------------------------------- |
+| 名称 | 参数类型 | 可读 | 可写 | 说明 |
+| ---- | ------------------------------------------------------------ | ---- | ---- | ------------------------------------- |
| name | string | 是 | 否 | Worker的名字,new Worker时指定。 |
-| self | [WorkerGlobalScope](#workerglobalscope) & typeof globalThis | 是 | 否 | WorkerGlobalScope本身。 |
+| self | [WorkerGlobalScope](#workerglobalscope) & typeof globalThis | 是 | 否 | WorkerGlobalScope本身。 |
+
+### onerror(deprecated)
-### onerror
+> **说明:**
+> 从API version 9开始废弃,建议使用[GlobalScope9+](#globalscope9).onerror替代。
onerror?: (ev: ErrorEvent) => void
@@ -688,27 +1377,31 @@ parentPort.onerror = function(e){
}
```
+
## 其他说明
### 序列化支持类型
-| Type | 备注 | 是否支持 |
-| ------------------- | -------------------------------------------------------- | -------------------- |
-| All Primitive Type | 不包括symbol | 是 |
-| Date | | 是 |
-| String | | 是 |
-| RegExp | | 是 |
-| Array | | 是 |
-| Map | | 是 |
-| Set | | 是 |
-| Object | 只支持Plain Object,不支持带function的 | 是 |
-| ArrayBuffer | 提供transfer能力 | 是 |
-| TypedArray | | 是 |
+| Type | 备注 | 是否支持 |
+| ------------------ | -------------------------------------- | -------- |
+| All Primitive Type | 不包括symbol | 是 |
+| Date | | 是 |
+| String | | 是 |
+| RegExp | | 是 |
+| Array | | 是 |
+| Map | | 是 |
+| Set | | 是 |
+| Object | 只支持Plain Object,不支持带function的 | 是 |
+| ArrayBuffer | 提供transfer能力 | 是 |
+| TypedArray | | 是 |
特例:传递通过自定义class创建出来的object时,不会发生序列化错误,但是自定义class的属性(如Function)无法通过序列化传递。
+> **说明:**
+> 以API version 9的FA工程为例。
+
```js
// main.js
import worker from '@ohos.worker';
-const workerInstance = new worker.Worker("workers/worker.js");
+const workerInstance = new worker.Thread("workers/worker.js");
workerInstance.postMessage("message from main to worker");
workerInstance.onmessage = function(d) {
// 当worker线程传递obj2时,data即为obj2。data没有Init、SetName的方法
@@ -718,7 +1411,7 @@ workerInstance.onmessage = function(d) {
```js
// worker.js
import worker from '@ohos.worker';
-const parentPort = worker.parentPort;
+const parentPort = worker.workerPort;
class MyModel {
Init() {
this.name = "wzy"
@@ -761,18 +1454,26 @@ Actor并发模型的交互原理:各个Actor并发地处理主线程任务,
### 注意事项
- Worker存在数量限制,当前支持最多同时存在7个Worker。
-- 当Worker数量超出限制,会出现Error "Too many workers, the number of workers exceeds the maximum."。
+- 在API version 8及之前的版本,当Worker数量超出限制时,会抛出错误Error "Too many workers, the number of workers exceeds the maximum."。
+- 从API version 9开始,当Worker数量超出限制时,会抛出错误BusinessError "Worker initialization failure, the number of workers exceeds the maximum"。
- 主动销毁Worker可以调用新创建Worker对象的terminate()或parentPort.close()方法。
+- 自API version 9版本开始,若Worker处于已经销毁或正在销毁等非运行状态时,调用其功能接口,会抛出相应的BusinessError。
- Worker的创建和销毁耗费性能,建议管理已创建的Worker并重复使用。
## 完整示例
+> **说明:**
+> 以API version 9的工程为例。
API version 8及之前的版本仅支持FA模型,如需使用,注意更换构造Worker的接口和创建worker线程中与主线程通信的对象的两个方法。
### FA模型
+
```js
// main.js(同级目录为例)
import worker from '@ohos.worker';
// 主线程中创建Worker对象
-const workerInstance = new worker.Worker("workers/worker.ts");
+const workerInstance = new worker.ThreadWorker("workers/worker.ts");
// 创建js和ts文件都可以
+// const workerInstance = new worker.ThreadWorker("workers/worker.js");
+
+// API version 9之前版本,worker对象的构造方法
// const workerInstance = new worker.Worker("workers/worker.js");
// 主线程向worker线程传递信息
@@ -798,7 +1499,10 @@ workerInstance.onexit = function() {
import worker from '@ohos.worker';
// 创建worker线程中与主线程通信的对象
-const parentPort = worker.parentPort
+const parentPort = worker.workerPort
+
+// API version 9之前版本,创建worker线程中与主线程通信的对象
+// const parentPort = worker.parentPort
// worker线程接收主线程信息
parentPort.onmessage = function(e) {
@@ -831,9 +1535,9 @@ build-profile.json5 配置 :
import worker from '@ohos.worker';
// 主线程中创建Worker对象
-const workerInstance = new worker.Worker("entry/ets/pages/workers/worker.ts");
+const workerInstance = new worker.ThreadWorker("entry/ets/pages/workers/worker.ts");
// 创建js和ts文件都可以
-// const workerInstance = new worker.Worker("entry/ets/pages/workers/worker.js");
+// const workerInstance = new worker.ThreadWorker("entry/ets/pages/workers/worker.js");
// 主线程向worker线程传递信息
workerInstance.postMessage("123");
@@ -857,7 +1561,7 @@ workerInstance.onexit = function() {
import worker from '@ohos.worker';
// 创建worker线程中与主线程通信的对象
-const parentPort = worker.parentPort
+const parentPort = worker.workerPort
// worker线程接收主线程信息
parentPort.onmessage = function(e) {
@@ -883,4 +1587,4 @@ build-profile.json5 配置:
]
}
}
-```
+```
\ No newline at end of file