提交 db31af11 编写于 作者: C coollixin

Modify the doc of worker module to origin/OpenHarmony-3.2-Release

Signed-off-by: Ncoollixin <lixin581@huawei.com>
上级 66f334bf
...@@ -82,9 +82,9 @@ import worker from '@ohos.worker'; ...@@ -82,9 +82,9 @@ import worker from '@ohos.worker';
// worker线程创建 // worker线程创建
// FA模型-目录同级(entry模块下,workers目录与pages目录同级) // FA模型-目录同级(entry模块下,workers目录与pages目录同级)
const workerFAModel01 = new worker.ThreadWorker("workers/worker.js", {name:"first worker in FA model"}); const workerFAModel01 = new worker.ThreadWorker("workers/worker.ts", {name:"first worker in FA model"});
// FA模型-目录不同级(entry模块下,workers目录与pages目录的父目录同级) // FA模型-目录不同级(entry模块下,workers目录与pages目录的父目录同级)
const workerFAModel02 = new worker.ThreadWorker("../workers/worker.js"); const workerFAModel02 = new worker.ThreadWorker("../workers/worker.ts");
// Stage模型-目录同级(entry模块下,workers目录与pages目录同级) // Stage模型-目录同级(entry模块下,workers目录与pages目录同级)
const workerStageModel01 = new worker.ThreadWorker('entry/ets/workers/worker.ts', {name:"first worker in Stage model"}); const workerStageModel01 = new worker.ThreadWorker('entry/ets/workers/worker.ts', {name:"first worker in Stage model"});
...@@ -114,7 +114,7 @@ FA模型: ...@@ -114,7 +114,7 @@ FA模型:
"buildOption": { "buildOption": {
"sourceOption": { "sourceOption": {
"workers": [ "workers": [
"./src/main/ets/MainAbility/workers/worker.ts" "./src/main/ets/entryability/workers/worker.ts"
] ]
} }
} }
...@@ -160,9 +160,9 @@ Stage模型: ...@@ -160,9 +160,9 @@ Stage模型:
### postMessage<sup>9+</sup> ### postMessage<sup>9+</sup>
postMessage(message: Object, transfer: ArrayBuffer[]): void; postMessage(message: Object, transfer: ArrayBuffer[]): void
向Worker线程发送数据,数据类型必须是序列化所支持的类型。序列化支持类型见其他说明 宿主线程通过转移对象所有权的方式向Worker线程发送消息
**系统能力:** SystemCapability.Utils.Lang **系统能力:** SystemCapability.Utils.Lang
...@@ -170,8 +170,8 @@ postMessage(message: Object, transfer: ArrayBuffer[]): void; ...@@ -170,8 +170,8 @@ postMessage(message: Object, transfer: ArrayBuffer[]): void;
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------- | ---- | ------------------------------------------------------------ | | -------- | ------------- | ---- | ------------------------------------------------------------ |
| message | Object | 是 | 发送至Worker的数据 | | message | Object | 是 | 发送至Worker的数据,该数据对象必须是可序列化,序列化支持类型见[其他说明](#序列化支持类型) |
| transfer | ArrayBuffer[] | 是 | 可传递&nbsp;ArrayBuffer&nbsp;的实例对象,数组中不可传入null。 | | transfer | ArrayBuffer[] | 是 | 表示可转移的ArrayBuffer实例对象数组,该数组中对象的所有权会被转移到Worker线程,在宿主线程中将会变为不可用,仅在Worker线程中可用,数组不可传入null。 |
**错误码:** **错误码:**
...@@ -180,7 +180,7 @@ postMessage(message: Object, transfer: ArrayBuffer[]): void; ...@@ -180,7 +180,7 @@ postMessage(message: Object, transfer: ArrayBuffer[]): void;
| 错误码ID | 错误信息 | | 错误码ID | 错误信息 |
| -------- | ----------------------------------------- | | -------- | ----------------------------------------- |
| 10200004 | Worker instance is not running. | | 10200004 | Worker instance is not running. |
| 10200006 | Serializing an uncaught exception failed. | | 10200006 | An exception occurred during serialization. |
**示例:** **示例:**
...@@ -195,7 +195,7 @@ workerInstance.postMessage(buffer, [buffer]); ...@@ -195,7 +195,7 @@ workerInstance.postMessage(buffer, [buffer]);
postMessage(message: Object, options?: PostMessageOptions): void postMessage(message: Object, options?: PostMessageOptions): void
向Worker线程发送数据,数据类型必须是序列化所支持的类型。序列化支持类型见其他说明 宿主线程通过转移对象所有权或者拷贝数据的方式向Worker线程发送消息
**系统能力:** SystemCapability.Utils.Lang **系统能力:** SystemCapability.Utils.Lang
...@@ -203,8 +203,8 @@ postMessage(message: Object, options?: PostMessageOptions): void ...@@ -203,8 +203,8 @@ postMessage(message: Object, options?: PostMessageOptions): void
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| ------- | ----------------------------------------- | ---- | ------------------------------------------------------------ | | ------- | ----------------------------------------- | ---- | ------------------------------------------------------------ |
| message | Object | 是 | 发送至Worker的数据 | | message | Object | 是 | 发送至Worker的数据,该数据对象必须是可序列化,序列化支持类型见[其他说明](#序列化支持类型) |
| options | [PostMessageOptions](#postmessageoptions) | 否 | 可传输对象是&nbsp;ArrayBuffer&nbsp;的实例对象。若不填入该参数,默认设置为 undefined。| | options | [PostMessageOptions](#postmessageoptions) | 否 | 当填入该参数时,与传入ArrayBuffer[]的作用一致,该数组中对象的所有权会被转移到Worker线程,在宿主线程中将会变为不可用,仅在Worker线程中可用。<br>若不填入该参数,默认设置为 undefined,通过拷贝数据的方式传输信息到Worker线程。 |
**错误码:** **错误码:**
...@@ -213,7 +213,7 @@ postMessage(message: Object, options?: PostMessageOptions): void ...@@ -213,7 +213,7 @@ postMessage(message: Object, options?: PostMessageOptions): void
| 错误码ID | 错误信息 | | 错误码ID | 错误信息 |
| -------- | ----------------------------------------- | | -------- | ----------------------------------------- |
| 10200004 | Worker instance is not running. | | 10200004 | Worker instance is not running. |
| 10200006 | Serializing an uncaught exception failed. | | 10200006 | An exception occurred during serialization. |
**示例:** **示例:**
...@@ -383,10 +383,10 @@ workerInstance.onexit = function(e) { ...@@ -383,10 +383,10 @@ workerInstance.onexit = function(e) {
} }
//onexit被执行两种方式: //onexit被执行两种方式:
//主线程 // main thread
workerInstance.terminate(); workerInstance.terminate();
//worker线程: // worker线程:
//parentPort.close() //parentPort.close()
``` ```
...@@ -848,16 +848,16 @@ Worker线程用于与宿主线程通信的类,通过postMessage接口发送消 ...@@ -848,16 +848,16 @@ Worker线程用于与宿主线程通信的类,通过postMessage接口发送消
postMessage(messageObject: Object, transfer: ArrayBuffer[]): void; postMessage(messageObject: Object, transfer: ArrayBuffer[]): void;
Worker线程向宿主线程发送消息。 Worker线程通过转移对象所有权的方式向宿主线程发送消息。
**系统能力:** SystemCapability.Utils.Lang **系统能力:** SystemCapability.Utils.Lang
**参数:** **参数:**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------- | ---- | ------------------------------------------------------- | | -------- | ------------- | ---- | ------------------------------------------------------------ |
| message | Object | 是 | 发送至宿主线程的数据 | | message | Object | 是 | 发送至宿主线程的数据,该数据对象必须是可序列化,序列化支持类型见[其他说明](#序列化支持类型) |
| transfer | ArrayBuffer[] | 是 | 可传输对象是ArrayBuffer的实例对象,数组中不可传入null。 | | transfer | ArrayBuffer[] | 是 | 表示可转移的ArrayBuffer实例对象数组,该数组中对象的所有权会被转移到宿主线程,在Worker线程中将会变为不可用,仅在宿主线程中可用,数组不可传入null。 |
**错误码:** **错误码:**
...@@ -866,18 +866,18 @@ Worker线程向宿主线程发送消息。 ...@@ -866,18 +866,18 @@ Worker线程向宿主线程发送消息。
| 错误码ID | 错误信息 | | 错误码ID | 错误信息 |
| -------- | ----------------------------------------- | | -------- | ----------------------------------------- |
| 10200004 | Worker instance is not running. | | 10200004 | Worker instance is not running. |
| 10200006 | Serializing an uncaught exception failed. | | 10200006 | An exception occurred during serialization. |
**示例:** **示例:**
```js ```js
// main.js // main thread
import worker from '@ohos.worker'; import worker from '@ohos.worker';
const workerInstance = new worker.ThreadWorker("entry/ets/workers/worker.ts"); const workerInstance = new worker.ThreadWorker("entry/ets/workers/worker.ts");
workerInstance.postMessage("hello world"); workerInstance.postMessage("hello world");
workerInstance.onmessage = function(e) { workerInstance.onmessage = function(e) {
// let data = e.data; // let data = e.data;
console.log("receive data from worker.js"); console.log("receive data from worker.ts");
} }
``` ```
...@@ -896,7 +896,7 @@ workerPort.onmessage = function(e){ ...@@ -896,7 +896,7 @@ workerPort.onmessage = function(e){
postMessage(messageObject: Object, options?: PostMessageOptions): void postMessage(messageObject: Object, options?: PostMessageOptions): void
Worker线程向宿主线程发送消息。 Worker线程通过转移对象所有权或者拷贝数据的方式向宿主线程发送消息。
**系统能力:** SystemCapability.Utils.Lang **系统能力:** SystemCapability.Utils.Lang
...@@ -904,8 +904,8 @@ Worker线程向宿主线程发送消息。 ...@@ -904,8 +904,8 @@ Worker线程向宿主线程发送消息。
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| ------- | ----------------------------------------- | ---- | ------------------------------------------------------------ | | ------- | ----------------------------------------- | ---- | ------------------------------------------------------------ |
| message | Object | 是 | 发送至宿主线程的数据 | | message | Object | 是 | 发送至宿主线程的数据,该数据对象必须是可序列化,序列化支持类型见[其他说明](#序列化支持类型) |
| options | [PostMessageOptions](#postmessageoptions) | 否 | 可传输对象是ArrayBuffer的实例对象。若不填入该参数,默认设置为 undefined。| | options | [PostMessageOptions](#postmessageoptions) | 否 | 当填入该参数时,与传入ArrayBuffer[]的作用一致,该数组中对象的所有权会被转移到宿主线程,在Worker线程中将会变为不可用,仅在宿主线程中可用。<br/>若不填入该参数,默认设置为 undefined,通过拷贝数据的方式传输信息到宿主线程。 |
**错误码:** **错误码:**
...@@ -914,18 +914,18 @@ Worker线程向宿主线程发送消息。 ...@@ -914,18 +914,18 @@ Worker线程向宿主线程发送消息。
| 错误码ID | 错误信息 | | 错误码ID | 错误信息 |
| -------- | ----------------------------------------- | | -------- | ----------------------------------------- |
| 10200004 | Worker instance is not running. | | 10200004 | Worker instance is not running. |
| 10200006 | Serializing an uncaught exception failed. | | 10200006 | An exception occurred during serialization. |
**示例:** **示例:**
```js ```js
// main.js // main thread
import worker from '@ohos.worker'; import worker from '@ohos.worker';
const workerInstance = new worker.ThreadWorker("entry/ets/workers/worker.ts"); const workerInstance = new worker.ThreadWorker("entry/ets/workers/worker.ts");
workerInstance.postMessage("hello world"); workerInstance.postMessage("hello world");
workerInstance.onmessage = function(e) { workerInstance.onmessage = function(e) {
// let data = e.data; // let data = e.data;
console.log("receive data from worker.js"); console.log("receive data from worker.ts");
} }
``` ```
...@@ -935,7 +935,7 @@ import worker from '@ohos.worker'; ...@@ -935,7 +935,7 @@ import worker from '@ohos.worker';
const workerPort = worker.workerPort; const workerPort = worker.workerPort;
workerPort.onmessage = function(e){ workerPort.onmessage = function(e){
// let data = e.data; // let data = e.data;
workerPort.postMessage("receive data from main.js"); workerPort.postMessage("receive data from main thread");
} }
``` ```
...@@ -959,7 +959,7 @@ close(): void ...@@ -959,7 +959,7 @@ close(): void
**示例:** **示例:**
```js ```js
// main.js // main thread
import worker from '@ohos.worker'; import worker from '@ohos.worker';
const workerInstance = new worker.ThreadWorker("entry/ets/workers/worker.ts"); const workerInstance = new worker.ThreadWorker("entry/ets/workers/worker.ts");
``` ```
...@@ -978,7 +978,7 @@ workerPort.onmessage = function(e) { ...@@ -978,7 +978,7 @@ workerPort.onmessage = function(e) {
onmessage?: (this: ThreadWorkerGlobalScope, ev: MessageEvents) =&gt; void onmessage?: (this: ThreadWorkerGlobalScope, ev: MessageEvents) =&gt; void
DedicatedWorkerGlobalScope的onmessage属性表示Worker线程收到来自其宿主线程通过postMessage接口发送的消息时被调用的事件处理程序,处理程序在Worker线程中执行。 ThreadWorkerGlobalScope的onmessage属性表示Worker线程收到来自其宿主线程通过postMessage接口发送的消息时被调用的事件处理程序,处理程序在Worker线程中执行。
**系统能力:** SystemCapability.Utils.Lang **系统能力:** SystemCapability.Utils.Lang
...@@ -1001,7 +1001,7 @@ DedicatedWorkerGlobalScope的onmessage属性表示Worker线程收到来自其宿 ...@@ -1001,7 +1001,7 @@ DedicatedWorkerGlobalScope的onmessage属性表示Worker线程收到来自其宿
**示例:** **示例:**
```js ```js
// main.js // main thread
import worker from '@ohos.worker'; import worker from '@ohos.worker';
const workerInstance = new worker.ThreadWorker("entry/ets/workers/worker.ts"); const workerInstance = new worker.ThreadWorker("entry/ets/workers/worker.ts");
workerInstance.postMessage("hello world"); workerInstance.postMessage("hello world");
...@@ -1012,7 +1012,7 @@ workerInstance.postMessage("hello world"); ...@@ -1012,7 +1012,7 @@ workerInstance.postMessage("hello world");
import worker from '@ohos.worker'; import worker from '@ohos.worker';
const workerPort = worker.workerPort; const workerPort = worker.workerPort;
workerPort.onmessage = function(e) { workerPort.onmessage = function(e) {
console.log("receive main.js message"); console.log("receive main thread message");
} }
``` ```
...@@ -1021,7 +1021,7 @@ workerPort.onmessage = function(e) { ...@@ -1021,7 +1021,7 @@ workerPort.onmessage = function(e) {
onmessageerror?: (this: ThreadWorkerGlobalScope, ev: MessageEvents) =&gt; void onmessageerror?: (this: ThreadWorkerGlobalScope, ev: MessageEvents) =&gt; void
DedicatedWorkerGlobalScope的onmessageerror属性表示当Worker对象接收到一条无法被反序列化的消息时被调用的事件处理程序,处理程序在Worker线程中执行。 ThreadWorkerGlobalScope的onmessageerror属性表示当Worker对象接收到一条无法被反序列化的消息时被调用的事件处理程序,处理程序在Worker线程中执行。
**系统能力:** SystemCapability.Utils.Lang **系统能力:** SystemCapability.Utils.Lang
...@@ -1044,7 +1044,7 @@ DedicatedWorkerGlobalScope的onmessageerror属性表示当Worker对象接收到 ...@@ -1044,7 +1044,7 @@ DedicatedWorkerGlobalScope的onmessageerror属性表示当Worker对象接收到
**示例:** **示例:**
```js ```js
// main.js // main thread
import worker from '@ohos.worker'; import worker from '@ohos.worker';
const workerInstance = new worker.ThreadWorker("entry/ets/workers/worker.ts"); const workerInstance = new worker.ThreadWorker("entry/ets/workers/worker.ts");
``` ```
...@@ -1054,7 +1054,7 @@ const workerInstance = new worker.ThreadWorker("entry/ets/workers/worker.ts"); ...@@ -1054,7 +1054,7 @@ const workerInstance = new worker.ThreadWorker("entry/ets/workers/worker.ts");
import worker from '@ohos.worker'; import worker from '@ohos.worker';
const parentPort = worker.workerPort; const parentPort = worker.workerPort;
parentPort.onmessageerror = function(e) { parentPort.onmessageerror = function(e) {
console.log("worker.js onmessageerror") console.log("worker.ts onmessageerror")
} }
``` ```
...@@ -1129,7 +1129,7 @@ GlobalScope的onerror属性表示Worker在执行过程中发生异常被调用 ...@@ -1129,7 +1129,7 @@ GlobalScope的onerror属性表示Worker在执行过程中发生异常被调用
**示例:** **示例:**
```js ```js
// main.js // main thread
import worker from '@ohos.worker'; import worker from '@ohos.worker';
const workerInstance = new worker.ThreadWorker("entry/ets/workers/worker.ts") const workerInstance = new worker.ThreadWorker("entry/ets/workers/worker.ts")
``` ```
...@@ -1139,7 +1139,7 @@ const workerInstance = new worker.ThreadWorker("entry/ets/workers/worker.ts") ...@@ -1139,7 +1139,7 @@ const workerInstance = new worker.ThreadWorker("entry/ets/workers/worker.ts")
import worker from '@ohos.worker'; import worker from '@ohos.worker';
const workerPort = worker.workerPort const workerPort = worker.workerPort
workerPort.onerror = function(e){ workerPort.onerror = function(e){
console.log("worker.js onerror") console.log("worker.ts onerror")
} }
``` ```
...@@ -1192,9 +1192,9 @@ import worker from '@ohos.worker'; ...@@ -1192,9 +1192,9 @@ import worker from '@ohos.worker';
// worker线程创建 // worker线程创建
// FA模型-目录同级 // FA模型-目录同级
const workerFAModel01 = new worker.Worker("workers/worker.js", {name:"first worker in FA model"}); const workerFAModel01 = new worker.Worker("workers/worker.ts", {name:"first worker in FA model"});
// FA模型-目录不同级(以workers目录放置pages目录前一级为例) // FA模型-目录不同级(以workers目录放置pages目录前一级为例)
const workerFAModel02 = new worker.Worker("../workers/worker.js"); const workerFAModel02 = new worker.Worker("../workers/worker.ts");
// Stage模型-目录同级 // Stage模型-目录同级
const workerStageModel01 = new worker.Worker('entry/ets/workers/worker.ts', {name:"first worker in Stage model"}); const workerStageModel01 = new worker.Worker('entry/ets/workers/worker.ts', {name:"first worker in Stage model"});
...@@ -1215,7 +1215,7 @@ FA模型: ...@@ -1215,7 +1215,7 @@ FA模型:
"buildOption": { "buildOption": {
"sourceOption": { "sourceOption": {
"workers": [ "workers": [
"./src/main/ets/MainAbility/workers/worker.ts" "./src/main/ets/entryability/workers/worker.ts"
] ]
} }
} }
...@@ -1255,9 +1255,9 @@ Stage模型: ...@@ -1255,9 +1255,9 @@ Stage模型:
### postMessage<sup>(deprecated)</sup> ### postMessage<sup>(deprecated)</sup>
postMessage(message: Object, transfer: ArrayBuffer[]): void; postMessage(message: Object, transfer: ArrayBuffer[]): void
向Worker线程发送数据,数据类型必须是序列化所支持的类型。序列化支持类型见其他说明 宿主线程通过转移对象所有权的方式向Worker线程发送消息
> **说明:**<br/> > **说明:**<br/>
> 从API version 7 开始支持,从API version 9 开始废弃,建议使用[ThreadWorker.postMessage<sup>9+</sup>](#postmessage9)替代。 > 从API version 7 开始支持,从API version 9 开始废弃,建议使用[ThreadWorker.postMessage<sup>9+</sup>](#postmessage9)替代。
...@@ -1267,14 +1267,14 @@ postMessage(message: Object, transfer: ArrayBuffer[]): void; ...@@ -1267,14 +1267,14 @@ postMessage(message: Object, transfer: ArrayBuffer[]): void;
**参数:** **参数:**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------- | ---- | ----------------------------------------------- | | -------- | ------------- | ---- | ------------------------------------------------------------ |
| message | Object | 是 | 发送至Worker的数据 | | message | Object | 是 | 发送至Worker的数据,该数据对象必须是可序列化,序列化支持类型见[其他说明](#序列化支持类型) |
| transfer | ArrayBuffer[] | 是 | 可转移对象是&nbsp;ArrayBuffer&nbsp;的实例对象。 | | transfer | ArrayBuffer[] | 是 | 表示可转移的ArrayBuffer实例对象数组,该数组中对象的所有权会被转移到Worker线程,在宿主线程中将会变为不可用,仅在Worker线程中可用,数组不可传入null。 |
**示例:** **示例:**
```js ```js
const workerInstance = new worker.Worker("workers/worker.js"); const workerInstance = new worker.Worker("workers/worker.ts");
var buffer = new ArrayBuffer(8); var buffer = new ArrayBuffer(8);
workerInstance.postMessage(buffer, [buffer]); workerInstance.postMessage(buffer, [buffer]);
...@@ -1284,7 +1284,7 @@ workerInstance.postMessage(buffer, [buffer]); ...@@ -1284,7 +1284,7 @@ workerInstance.postMessage(buffer, [buffer]);
postMessage(message: Object, options?: PostMessageOptions): void postMessage(message: Object, options?: PostMessageOptions): void
向Worker线程发送数据,数据类型必须是序列化所支持的类型。序列化支持类型见其他说明 宿主线程通过转移对象所有权或者拷贝数据的方式向Worker线程发送消息
> **说明:**<br/> > **说明:**<br/>
> 从API version 7 开始支持,从API version 9 开始废弃,建议使用[ThreadWorker.postMessage<sup>9+</sup>](#postmessage9-1)替代。 > 从API version 7 开始支持,从API version 9 开始废弃,建议使用[ThreadWorker.postMessage<sup>9+</sup>](#postmessage9-1)替代。
...@@ -1295,13 +1295,13 @@ postMessage(message: Object, options?: PostMessageOptions): void ...@@ -1295,13 +1295,13 @@ postMessage(message: Object, options?: PostMessageOptions): void
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| ------- | ----------------------------------------- | ---- | ------------------------------------------------------------ | | ------- | ----------------------------------------- | ---- | ------------------------------------------------------------ |
| message | Object | 是 | 发送至Worker的数据 | | message | Object | 是 | 发送至Worker的数据,该数据对象必须是可序列化,序列化支持类型见[其他说明](#序列化支持类型) |
| options | [PostMessageOptions](#postmessageoptions) | 否 | 可传输对象是&nbsp;ArrayBuffer&nbsp;的实例对象。若不填入该参数,默认设置为 undefined。| | options | [PostMessageOptions](#postmessageoptions) | 否 | 当填入该参数时,与传入ArrayBuffer[]的作用一致,该数组中对象的所有权会被转移到Worker线程,在宿主线程中将会变为不可用,仅在Worker线程中可用。<br/>若不填入该参数,默认设置为 undefined,通过拷贝数据的方式传输信息到Worker线程。 |
**示例:** **示例:**
```js ```js
const workerInstance = new worker.Worker("workers/worker.js"); const workerInstance = new worker.Worker("workers/worker.ts");
workerInstance.postMessage("hello world"); workerInstance.postMessage("hello world");
...@@ -1331,7 +1331,7 @@ on(type: string, listener: EventListener): void ...@@ -1331,7 +1331,7 @@ on(type: string, listener: EventListener): void
**示例:** **示例:**
```js ```js
const workerInstance = new worker.Worker("workers/worker.js"); const workerInstance = new worker.Worker("workers/worker.ts");
workerInstance.on("alert", (e)=>{ workerInstance.on("alert", (e)=>{
console.log("alert listener callback"); console.log("alert listener callback");
}) })
...@@ -1359,7 +1359,7 @@ once(type: string, listener: EventListener): void ...@@ -1359,7 +1359,7 @@ once(type: string, listener: EventListener): void
**示例:** **示例:**
```js ```js
const workerInstance = new worker.Worker("workers/worker.js"); const workerInstance = new worker.Worker("workers/worker.ts");
workerInstance.once("alert", (e)=>{ workerInstance.once("alert", (e)=>{
console.log("alert listener callback"); console.log("alert listener callback");
}) })
...@@ -1387,7 +1387,7 @@ off(type: string, listener?: EventListener): void ...@@ -1387,7 +1387,7 @@ off(type: string, listener?: EventListener): void
**示例:** **示例:**
```js ```js
const workerInstance = new worker.Worker("workers/worker.js"); const workerInstance = new worker.Worker("workers/worker.ts");
//使用on接口、once接口或addEventListener接口创建“alert”事件,使用off接口删除事件。 //使用on接口、once接口或addEventListener接口创建“alert”事件,使用off接口删除事件。
workerInstance.off("alert"); workerInstance.off("alert");
``` ```
...@@ -1407,7 +1407,7 @@ terminate(): void ...@@ -1407,7 +1407,7 @@ terminate(): void
**示例:** **示例:**
```js ```js
const workerInstance = new worker.Worker("workers/worker.js"); const workerInstance = new worker.Worker("workers/worker.ts");
workerInstance.terminate(); workerInstance.terminate();
``` ```
...@@ -1432,13 +1432,13 @@ Worker对象的onexit属性表示Worker销毁时被调用的事件处理程序 ...@@ -1432,13 +1432,13 @@ Worker对象的onexit属性表示Worker销毁时被调用的事件处理程序
**示例:** **示例:**
```js ```js
const workerInstance = new worker.Worker("workers/worker.js"); const workerInstance = new worker.Worker("workers/worker.ts");
workerInstance.onexit = function(e) { workerInstance.onexit = function(e) {
console.log("onexit"); console.log("onexit");
} }
//onexit被执行两种方式: //onexit被执行两种方式:
//主线程 //main thread
workerInstance.terminate(); workerInstance.terminate();
//worker线程: //worker线程:
...@@ -1466,7 +1466,7 @@ Worker对象的onerror属性表示Worker在执行过程中发生异常被调用 ...@@ -1466,7 +1466,7 @@ Worker对象的onerror属性表示Worker在执行过程中发生异常被调用
**示例:** **示例:**
```js ```js
const workerInstance = new worker.Worker("workers/worker.js"); const workerInstance = new worker.Worker("workers/worker.ts");
workerInstance.onerror = function(e) { workerInstance.onerror = function(e) {
console.log("onerror"); console.log("onerror");
} }
...@@ -1493,7 +1493,7 @@ Worker对象的onmessage属性表示宿主线程接收到来自其创建的Worke ...@@ -1493,7 +1493,7 @@ Worker对象的onmessage属性表示宿主线程接收到来自其创建的Worke
**示例:** **示例:**
```js ```js
const workerInstance = new worker.Worker("workers/worker.js"); const workerInstance = new worker.Worker("workers/worker.ts");
workerInstance.onmessage = function(e) { workerInstance.onmessage = function(e) {
// e : MessageEvent, 用法如下: // e : MessageEvent, 用法如下:
// let data = e.data; // let data = e.data;
...@@ -1522,7 +1522,7 @@ Worker对象的onmessageerror属性表示当Worker对象接收到一条无法被 ...@@ -1522,7 +1522,7 @@ Worker对象的onmessageerror属性表示当Worker对象接收到一条无法被
**示例:** **示例:**
```js ```js
const workerInstance = new worker.Worker("workers/worker.js"); const workerInstance = new worker.Worker("workers/worker.ts");
workerInstance.onmessageerror= function(e) { workerInstance.onmessageerror= function(e) {
console.log("onmessageerror"); console.log("onmessageerror");
} }
...@@ -1554,7 +1554,7 @@ addEventListener(type: string, listener: EventListener): void ...@@ -1554,7 +1554,7 @@ addEventListener(type: string, listener: EventListener): void
**示例:** **示例:**
```js ```js
const workerInstance = new worker.Worker("workers/worker.js"); const workerInstance = new worker.Worker("workers/worker.ts");
workerInstance.addEventListener("alert", (e)=>{ workerInstance.addEventListener("alert", (e)=>{
console.log("alert listener callback"); console.log("alert listener callback");
}) })
...@@ -1582,7 +1582,7 @@ removeEventListener(type: string, callback?: EventListener): void ...@@ -1582,7 +1582,7 @@ removeEventListener(type: string, callback?: EventListener): void
**示例:** **示例:**
```js ```js
const workerInstance = new worker.Worker("workers/worker.js"); const workerInstance = new worker.Worker("workers/worker.ts");
workerInstance.addEventListener("alert", (e)=>{ workerInstance.addEventListener("alert", (e)=>{
console.log("alert listener callback"); console.log("alert listener callback");
}) })
...@@ -1616,7 +1616,7 @@ dispatchEvent(event: Event): boolean ...@@ -1616,7 +1616,7 @@ dispatchEvent(event: Event): boolean
**示例:** **示例:**
```js ```js
const workerInstance = new worker.Worker("workers/worker.js"); const workerInstance = new worker.Worker("workers/worker.ts");
workerInstance.dispatchEvent({type:"eventType", timeStamp:0}); //timeStamp暂未支持。 workerInstance.dispatchEvent({type:"eventType", timeStamp:0}); //timeStamp暂未支持。
``` ```
...@@ -1624,7 +1624,7 @@ workerInstance.dispatchEvent({type:"eventType", timeStamp:0}); //timeStamp暂未 ...@@ -1624,7 +1624,7 @@ workerInstance.dispatchEvent({type:"eventType", timeStamp:0}); //timeStamp暂未
分发事件(dispatchEvent)可与监听接口(on、once、addEventListener)搭配使用,示例如下: 分发事件(dispatchEvent)可与监听接口(on、once、addEventListener)搭配使用,示例如下:
```js ```js
const workerInstance = new worker.Worker("workers/worker.js"); const workerInstance = new worker.Worker("workers/worker.ts");
//用法一: //用法一:
workerInstance.on("alert_on", (e)=>{ workerInstance.on("alert_on", (e)=>{
...@@ -1676,7 +1676,7 @@ removeAllListener(): void ...@@ -1676,7 +1676,7 @@ removeAllListener(): void
**示例:** **示例:**
```js ```js
const workerInstance = new worker.Worker("workers/worker.js"); const workerInstance = new worker.Worker("workers/worker.ts");
workerInstance.addEventListener("alert", (e)=>{ workerInstance.addEventListener("alert", (e)=>{
console.log("alert listener callback"); console.log("alert listener callback");
}) })
...@@ -1695,7 +1695,7 @@ Worker线程用于与宿主线程通信的类,通过postMessage接口发送消 ...@@ -1695,7 +1695,7 @@ Worker线程用于与宿主线程通信的类,通过postMessage接口发送消
postMessage(messageObject: Object, transfer: Transferable[]): void; postMessage(messageObject: Object, transfer: Transferable[]): void;
Worker线程向宿主线程发送消息。 Worker线程通过转移对象所有权的方式向宿主线程发送消息。
> **说明:**<br/> > **说明:**<br/>
> 此接口暂不支持使用,从API version 9 开始废弃,建议使用[ThreadWorkerGlobalScope<sup>9+</sup>.postMessage<sup>9+</sup>](#postmessage9-2)替代。 > 此接口暂不支持使用,从API version 9 开始废弃,建议使用[ThreadWorkerGlobalScope<sup>9+</sup>.postMessage<sup>9+</sup>](#postmessage9-2)替代。
...@@ -1706,14 +1706,14 @@ Worker线程向宿主线程发送消息。 ...@@ -1706,14 +1706,14 @@ Worker线程向宿主线程发送消息。
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| ------- | ----------------------------------------- | ---- | ------------------------------------------------------------ | | ------- | ----------------------------------------- | ---- | ------------------------------------------------------------ |
| messageObject | Object | 是 | 发送至宿主线程的数据 | | messageObject | Object | 是 | 发送至宿主线程的数据,该数据对象必须是可序列化,序列化支持类型见[其他说明](#序列化支持类型) |
| transfer| Transferable[] | 是 | 暂不支持该参数类型。 | | transfer| Transferable[] | 是 | 暂不支持该参数类型。 |
### postMessage<sup>9+</sup> ### postMessage<sup>9+</sup>
postMessage(messageObject: Object, transfer: ArrayBuffer[]): void; postMessage(messageObject: Object, transfer: ArrayBuffer[]): void;
Worker线程向宿主线程发送消息。 Worker线程通过转移对象所有权的方式向宿主线程发送消息。
> **说明:**<br/> > **说明:**<br/>
> DedicatedWorkerGlobalScope类自API version 9 开始废弃,本接口建议使用[ThreadWorkerGlobalScope<sup>9+</sup>.postMessage<sup>9+</sup>](#postmessage9-2)替代。 > DedicatedWorkerGlobalScope类自API version 9 开始废弃,本接口建议使用[ThreadWorkerGlobalScope<sup>9+</sup>.postMessage<sup>9+</sup>](#postmessage9-2)替代。
...@@ -1723,24 +1723,24 @@ Worker线程向宿主线程发送消息。 ...@@ -1723,24 +1723,24 @@ Worker线程向宿主线程发送消息。
**参数:** **参数:**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------- | ---- | ----------------------------------------------------- | | -------- | ------------- | ---- | ------------------------------------------------------------ |
| message | Object | 是 | 发送至宿主线程的数据 | | message | Object | 是 | 发送至宿主线程的数据,该数据对象必须是可序列化,序列化支持类型见[其他说明](#序列化支持类型) |
| transfer | ArrayBuffer[] | 是 | 可传输对象是ArrayBuffer的实例对象,数组不可传入null。 | | transfer | ArrayBuffer[] | 是 | 表示可转移的ArrayBuffer实例对象数组,该数组中对象的所有权会被转移到宿主线程,在Worker线程中将会变为不可用,仅在宿主线程中可用,数组不可传入null。 |
**示例:** **示例:**
```js ```js
// main.js // main thread
import worker from '@ohos.worker'; import worker from '@ohos.worker';
const workerInstance = new worker.Worker("workers/worker.js"); const workerInstance = new worker.Worker("workers/worker.ts");
workerInstance.postMessage("hello world"); workerInstance.postMessage("hello world");
workerInstance.onmessage = function(e) { workerInstance.onmessage = function(e) {
// let data = e.data; // let data = e.data;
console.log("receive data from worker.js"); console.log("receive data from worker.ts");
} }
``` ```
```js ```js
// worker.js // worker.ts
import worker from '@ohos.worker'; import worker from '@ohos.worker';
const parentPort = worker.parentPort; const parentPort = worker.parentPort;
parentPort.onmessage = function(e){ parentPort.onmessage = function(e){
...@@ -1754,7 +1754,7 @@ parentPort.onmessage = function(e){ ...@@ -1754,7 +1754,7 @@ parentPort.onmessage = function(e){
postMessage(messageObject: Object, options?: PostMessageOptions): void postMessage(messageObject: Object, options?: PostMessageOptions): void
Worker线程向宿主线程发送消息。 Worker线程通过转移对象所有权或者拷贝数据的方式向宿主线程发送消息。
> **说明:**<br/> > **说明:**<br/>
> 从API version 7 开始支持,从API version 9 开始废弃,建议使用[ThreadWorkerGlobalScope<sup>9+</sup>.postMessage<sup>9+</sup>](#postmessage9-3)替代。 > 从API version 7 开始支持,从API version 9 开始废弃,建议使用[ThreadWorkerGlobalScope<sup>9+</sup>.postMessage<sup>9+</sup>](#postmessage9-3)替代。
...@@ -1765,28 +1765,28 @@ Worker线程向宿主线程发送消息。 ...@@ -1765,28 +1765,28 @@ Worker线程向宿主线程发送消息。
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| ------- | ----------------------------------------- | ---- | ------------------------------------------------------------ | | ------- | ----------------------------------------- | ---- | ------------------------------------------------------------ |
| message | Object | 是 | 发送至宿主线程的数据 | | message | Object | 是 | 发送至宿主线程的数据,该数据对象必须是可序列化,序列化支持类型见[其他说明](#序列化支持类型) |
| options | [PostMessageOptions](#postmessageoptions) | 否 | 可传输对象是ArrayBuffer的实例对象。若不填入该参数,默认设置为 undefined。| | options | [PostMessageOptions](#postmessageoptions) | 否 | 当填入该参数时,与传入ArrayBuffer[]的作用一致,该数组中对象的所有权会被转移到宿主线程,在Worker线程中将会变为不可用,仅在宿主线程中可用。<br/>若不填入该参数,默认设置为 undefined,通过拷贝数据的方式传输信息到宿主线程。 |
**示例:** **示例:**
```js ```js
// main.js // main thread
import worker from '@ohos.worker'; import worker from '@ohos.worker';
const workerInstance = new worker.Worker("workers/worker.js"); const workerInstance = new worker.Worker("workers/worker.ts");
workerInstance.postMessage("hello world"); workerInstance.postMessage("hello world");
workerInstance.onmessage = function(e) { workerInstance.onmessage = function(e) {
// let data = e.data; // let data = e.data;
console.log("receive data from worker.js"); console.log("receive data from worker.ts");
} }
``` ```
```js ```js
// worker.js // worker.ts
import worker from '@ohos.worker'; import worker from '@ohos.worker';
const parentPort = worker.parentPort; const parentPort = worker.parentPort;
parentPort.onmessage = function(e){ parentPort.onmessage = function(e){
// let data = e.data; // let data = e.data;
parentPort.postMessage("receive data from main.js"); parentPort.postMessage("receive data from main thread");
} }
``` ```
...@@ -1804,12 +1804,12 @@ close(): void ...@@ -1804,12 +1804,12 @@ close(): void
**示例:** **示例:**
```js ```js
// main.js // main thread
import worker from '@ohos.worker'; import worker from '@ohos.worker';
const workerInstance = new worker.Worker("workers/worker.js"); const workerInstance = new worker.Worker("workers/worker.ts");
``` ```
```js ```js
// worker.js // worker.ts
import worker from '@ohos.worker'; import worker from '@ohos.worker';
const parentPort = worker.parentPort; const parentPort = worker.parentPort;
parentPort.onmessage = function(e) { parentPort.onmessage = function(e) {
...@@ -1839,17 +1839,17 @@ DedicatedWorkerGlobalScope的onmessage属性表示Worker线程收到来自其宿 ...@@ -1839,17 +1839,17 @@ DedicatedWorkerGlobalScope的onmessage属性表示Worker线程收到来自其宿
**示例:** **示例:**
```js ```js
// main.js // main thread
import worker from '@ohos.worker'; import worker from '@ohos.worker';
const workerInstance = new worker.Worker("workers/worker.js"); const workerInstance = new worker.Worker("workers/worker.ts");
workerInstance.postMessage("hello world"); workerInstance.postMessage("hello world");
``` ```
```js ```js
// worker.js // worker.ts
import worker from '@ohos.worker'; import worker from '@ohos.worker';
const parentPort = worker.parentPort; const parentPort = worker.parentPort;
parentPort.onmessage = function(e) { parentPort.onmessage = function(e) {
console.log("receive main.js message"); console.log("receive main thread message");
} }
``` ```
...@@ -1875,23 +1875,23 @@ DedicatedWorkerGlobalScope的onmessageerror属性表示当Worker对象接收到 ...@@ -1875,23 +1875,23 @@ DedicatedWorkerGlobalScope的onmessageerror属性表示当Worker对象接收到
**示例:** **示例:**
```js ```js
// main.js // main thread
import worker from '@ohos.worker'; import worker from '@ohos.worker';
const workerInstance = new worker.Worker("workers/worker.js"); const workerInstance = new worker.Worker("workers/worker.ts");
``` ```
```js ```js
// worker.js // worker.ts
import worker from '@ohos.worker'; import worker from '@ohos.worker';
const parentPort = worker.parentPort; const parentPort = worker.parentPort;
parentPort.onmessageerror = function(e) { parentPort.onmessageerror = function(e) {
console.log("worker.js onmessageerror") console.log("worker.ts onmessageerror")
} }
``` ```
## PostMessageOptions ## PostMessageOptions
明确数据传递过程中需要转移所有权对象的类,传递所有权的对象必须是ArrayBuffer。 明确数据传递过程中需要转移所有权对象的类,传递所有权的对象必须是ArrayBuffer,发送它的上下文中将会变为不可用,仅在接收方可用
**系统能力:** SystemCapability.Utils.Lang **系统能力:** SystemCapability.Utils.Lang
...@@ -1938,7 +1938,7 @@ parentPort.onmessageerror = function(e) { ...@@ -1938,7 +1938,7 @@ parentPort.onmessageerror = function(e) {
**示例:** **示例:**
```js ```js
const workerInstance = new worker.Worker("workers/worker.js"); const workerInstance = new worker.Worker("workers/worker.ts");
workerInstance.addEventListener("alert", (e)=>{ workerInstance.addEventListener("alert", (e)=>{
console.log("alert listener callback"); console.log("alert listener callback");
}) })
...@@ -2008,16 +2008,16 @@ WorkerGlobalScope的onerror属性表示Worker在执行过程中发生异常被 ...@@ -2008,16 +2008,16 @@ WorkerGlobalScope的onerror属性表示Worker在执行过程中发生异常被
**示例:** **示例:**
```js ```js
// main.js // main thread
import worker from '@ohos.worker'; import worker from '@ohos.worker';
const workerInstance = new worker.Worker("workers/worker.js") const workerInstance = new worker.Worker("workers/worker.ts")
``` ```
```js ```js
// worker.js // worker.ts
import worker from '@ohos.worker'; import worker from '@ohos.worker';
const parentPort = worker.parentPort const parentPort = worker.parentPort
parentPort.onerror = function(e){ parentPort.onerror = function(e){
console.log("worker.js onerror") console.log("worker.ts onerror")
} }
``` ```
...@@ -2043,17 +2043,17 @@ parentPort.onerror = function(e){ ...@@ -2043,17 +2043,17 @@ parentPort.onerror = function(e){
> 以API version 9的FA工程为例。 > 以API version 9的FA工程为例。
```js ```js
// main.js // main thread
import worker from '@ohos.worker'; import worker from '@ohos.worker';
const workerInstance = new worker.ThreadWorker("workers/worker.js"); const workerInstance = new worker.ThreadWorker("workers/worker.ts");
workerInstance.postMessage("message from main to worker"); workerInstance.postMessage("message from main thread to worker");
workerInstance.onmessage = function(d) { workerInstance.onmessage = function(d) {
// 当worker线程传递obj2时,data即为obj2。data没有Init、SetName的方法 // 当worker线程传递obj2时,data即为obj2。data没有Init、SetName的方法
let data = d.data; let data = d.data;
} }
``` ```
```js ```js
// worker.js // worker.ts
import worker from '@ohos.worker'; import worker from '@ohos.worker';
const workerPort = worker.workerPort; const workerPort = worker.workerPort;
class MyModel { class MyModel {
...@@ -2063,7 +2063,7 @@ class MyModel { ...@@ -2063,7 +2063,7 @@ class MyModel {
} }
} }
workerPort.onmessage = function(d) { workerPort.onmessage = function(d) {
console.log("worker.js onmessage"); console.log("worker.ts onmessage");
let data = d.data; let data = d.data;
let func1 = function() { let func1 = function() {
console.log("post message is function"); console.log("post message is function");
...@@ -2081,10 +2081,10 @@ workerPort.onmessage = function(d) { ...@@ -2081,10 +2081,10 @@ workerPort.onmessage = function(d) {
workerPort.postMessage(obj2); // 传递obj2不会发生序列化错误 workerPort.postMessage(obj2); // 传递obj2不会发生序列化错误
} }
workerPort.onmessageerror = function(e) { workerPort.onmessageerror = function(e) {
console.log("worker.js onmessageerror"); console.log("worker.ts onmessageerror");
} }
workerPort.onerror = function(e) { workerPort.onerror = function(e) {
console.log("worker.js onerror"); console.log("worker.ts onerror");
} }
``` ```
...@@ -2094,14 +2094,15 @@ Worker基于Actor并发模型实现。在Worker的交互流程中,JS主线程 ...@@ -2094,14 +2094,15 @@ Worker基于Actor并发模型实现。在Worker的交互流程中,JS主线程
Actor并发模型的交互原理:各个Actor并发地处理主线程任务,每个Actor内部都有一个消息队列及单线程执行模块,消息队列负责接收主线程及其他Actor的请求,单线程执行模块则负责串行地处理请求、向其他Actor发送请求以及创建新的Actor。由于Actor采用的是异步方式,各个Actor之间相互隔离没有数据竞争,因此Actor可以高并发运行。 Actor并发模型的交互原理:各个Actor并发地处理主线程任务,每个Actor内部都有一个消息队列及单线程执行模块,消息队列负责接收主线程及其他Actor的请求,单线程执行模块则负责串行地处理请求、向其他Actor发送请求以及创建新的Actor。由于Actor采用的是异步方式,各个Actor之间相互隔离没有数据竞争,因此Actor可以高并发运行。
### 注意事项 ### 注意事项
- Worker存在数量限制,当前支持最多同时存在7个Worker。 - Worker存在数量限制,当前支持最多同时存在8个Worker。
- 在API version 8及之前的版本,当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"。 - 从API version 9开始,当Worker数量超出限制时,会抛出错误BusinessError "Worker initialization failure, the number of workers exceeds the maximum."。
- 主动销毁Worker可以调用新创建Worker对象的terminate()或parentPort.close()方法。 - 主动销毁Worker可以调用新创建Worker对象的terminate()或parentPort.close()方法。
- 自API version 9版本开始,若Worker处于已经销毁或正在销毁等非运行状态时,调用其功能接口,会抛出相应的BusinessError。 - 自API version 9版本开始,若Worker处于已经销毁或正在销毁等非运行状态时,调用其功能接口,会抛出相应的BusinessError。
- Worker的创建和销毁耗费性能,建议管理已创建的Worker并重复使用。 - Worker的创建和销毁耗费性能,建议管理已创建的Worker并重复使用。
- 创建Worker工程时,new worker.Worker构造函数和new worker.ThreadWorker构造函数不能同时使用,否则将导致工程中Worker的功能异常。自API version 9版本开始,建议使用[new worker.ThreadWorker](#constructor9)构造函数,在API version 8及之前的版本,建议使用[new worker.Worker](#constructordeprecated)构造函数。 - 创建Worker工程时,new worker.Worker构造函数和new worker.ThreadWorker构造函数不能同时使用,否则将导致工程中Worker的功能异常。自API version 9版本开始,建议使用[new worker.ThreadWorker](#constructor9)构造函数,在API version 8及之前的版本,建议使用[new worker.Worker](#constructordeprecated)构造函数。
- 创建Worker工程时,在Worker线程的文件中(比如本文中worker.ts)不能导入任何有关构建UI的方法(比如ETS文件等),否则会导致Worker的功能失效。排查方式:解压生成的Hap包,在创建Worker线程的文件目录中找到"worker.js",全局搜索"View"关键字。如果存在该关键字,说明在worker.js中打包进去了构建UI的方法,会导致Worker的功能失效,建议在创建Worker线程的文件中修改 "import “xxx” from src"中src的目录层级。 - 创建Worker工程时,在Worker线程的文件中(比如本文中worker.ts)不能导入任何有关构建UI的方法(比如ets文件等),否则会导致Worker的功能失效。排查方式:解压生成的Hap包,在创建Worker线程的文件目录中找到"worker.js",全局搜索"View"关键字。如果存在该关键字,说明在worker.js中打包进去了构建UI的方法,会导致Worker的功能失效,建议在创建Worker线程的文件中修改 "import “xxx” from src"中src的目录层级。
- 线程间通信时传递的数据量最大限制为16M。
## 完整示例 ## 完整示例
> **说明:**<br/> > **说明:**<br/>
...@@ -2109,15 +2110,10 @@ Actor并发模型的交互原理:各个Actor并发地处理主线程任务, ...@@ -2109,15 +2110,10 @@ Actor并发模型的交互原理:各个Actor并发地处理主线程任务,
### FA模型 ### FA模型
```js ```js
// main.js(同级目录为例) // main thread(同级目录为例)
import worker from '@ohos.worker'; import worker from '@ohos.worker';
// 主线程中创建Worker对象 // 主线程中创建Worker对象
const workerInstance = new worker.ThreadWorker("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线程传递信息 // 主线程向worker线程传递信息
workerInstance.postMessage("123"); workerInstance.postMessage("123");
...@@ -2126,7 +2122,7 @@ workerInstance.postMessage("123"); ...@@ -2126,7 +2122,7 @@ workerInstance.postMessage("123");
workerInstance.onmessage = function(e) { workerInstance.onmessage = function(e) {
// data:worker线程发送的信息 // data:worker线程发送的信息
let data = e.data; let data = e.data;
console.log("main.js onmessage"); console.log("main thread onmessage");
// 销毁Worker对象 // 销毁Worker对象
workerInstance.terminate(); workerInstance.terminate();
...@@ -2134,7 +2130,7 @@ workerInstance.onmessage = function(e) { ...@@ -2134,7 +2130,7 @@ workerInstance.onmessage = function(e) {
// 在调用terminate后,执行回调onexit // 在调用terminate后,执行回调onexit
workerInstance.onexit = function() { workerInstance.onexit = function() {
console.log("main.js terminate"); console.log("main thread terminate");
} }
``` ```
```js ```js
...@@ -2144,9 +2140,6 @@ import worker from '@ohos.worker'; ...@@ -2144,9 +2140,6 @@ import worker from '@ohos.worker';
// 创建worker线程中与主线程通信的对象 // 创建worker线程中与主线程通信的对象
const workerPort = worker.workerPort const workerPort = worker.workerPort
// API version 9之前版本,创建worker线程中与主线程通信的对象
// const parentPort = worker.parentPort
// worker线程接收主线程信息 // worker线程接收主线程信息
workerPort.onmessage = function(e) { workerPort.onmessage = function(e) {
// data:主线程发送的信息 // data:主线程发送的信息
...@@ -2167,20 +2160,18 @@ build-profile.json5 配置 : ...@@ -2167,20 +2160,18 @@ build-profile.json5 配置 :
"buildOption": { "buildOption": {
"sourceOption": { "sourceOption": {
"workers": [ "workers": [
"./src/main/ets/MainAbility/workers/worker.ts" "./src/main/ets/entryability/workers/worker.ts"
] ]
} }
} }
``` ```
### Stage模型 ### Stage模型
```js ```js
// main.js(以不同目录为例) // main thread(以不同目录为例)
import worker from '@ohos.worker'; import worker from '@ohos.worker';
// 主线程中创建Worker对象 // 主线程中创建Worker对象
const workerInstance = new worker.ThreadWorker("entry/ets/pages/workers/worker.ts"); const workerInstance = new worker.ThreadWorker("entry/ets/pages/workers/worker.ts");
// 创建js和ts文件都可以
// const workerInstance = new worker.ThreadWorker("entry/ets/pages/workers/worker.js");
// 主线程向worker线程传递信息 // 主线程向worker线程传递信息
workerInstance.postMessage("123"); workerInstance.postMessage("123");
...@@ -2189,14 +2180,14 @@ workerInstance.postMessage("123"); ...@@ -2189,14 +2180,14 @@ workerInstance.postMessage("123");
workerInstance.onmessage = function(e) { workerInstance.onmessage = function(e) {
// data:worker线程发送的信息 // data:worker线程发送的信息
let data = e.data; let data = e.data;
console.log("main.js onmessage"); console.log("main thread onmessage");
// 销毁Worker对象 // 销毁Worker对象
workerInstance.terminate(); workerInstance.terminate();
} }
// 在调用terminate后,执行onexit // 在调用terminate后,执行onexit
workerInstance.onexit = function() { workerInstance.onexit = function() {
console.log("main.js terminate"); console.log("main thread terminate");
} }
``` ```
```js ```js
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册