mirror of
https://github.com/openharmony/js_worker_module.git
synced 2026-07-19 19:23:34 -04:00
update readme, add license
Signed-off-by: y00576111 <yaojian16@huawei.com> Change-Id: I0fbd8e8917adcd4b32564337c0f3b326f5a3102b
This commit is contained in:
@@ -1,36 +0,0 @@
|
||||
# js_worker_module
|
||||
|
||||
#### Description
|
||||
{**When you're done, you can delete the content in this README and update the file with details for others getting started with your repository**}
|
||||
|
||||
#### Software Architecture
|
||||
Software architecture description
|
||||
|
||||
#### Installation
|
||||
|
||||
1. xxxx
|
||||
2. xxxx
|
||||
3. xxxx
|
||||
|
||||
#### Instructions
|
||||
|
||||
1. xxxx
|
||||
2. xxxx
|
||||
3. xxxx
|
||||
|
||||
#### Contribution
|
||||
|
||||
1. Fork the repository
|
||||
2. Create Feat_xxx branch
|
||||
3. Commit your code
|
||||
4. Create Pull Request
|
||||
|
||||
|
||||
#### Gitee Feature
|
||||
|
||||
1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md
|
||||
2. Gitee blog [blog.gitee.com](https://blog.gitee.com)
|
||||
3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore)
|
||||
4. The most valuable open source project [GVP](https://gitee.com/gvp)
|
||||
5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help)
|
||||
6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
|
||||
@@ -1,235 +1,374 @@
|
||||
# js_worker_module
|
||||
|
||||
#### 一、Worker介绍
|
||||
### Introduction
|
||||
|
||||
worker能够让js拥有多线程的能力,通过postMessage完成worker线程与宿主线程通信。
|
||||
Worker enables JS to have the ability of multithreading, and completes the communication between worker thread and host thread through PostMessage.
|
||||
|
||||
一. Worker介绍
|
||||
### Interface description
|
||||
For interface implementation, see: js_worker_module/jsapi/worker
|
||||
|
||||
接口介绍
|
||||
#### Worker object description
|
||||
|
||||
1.constructor(scriptURL:string, options? WorkerOptions);
|
||||
构造函数
|
||||
The object object used by the host thread to communicate with the worker thread.
|
||||
|
||||
使用方法:
|
||||
##### Interface
|
||||
|
||||
1.
|
||||
|
||||
- name
|
||||
|
||||
|constructor(scriptURL:string, options? WorkerOptions) | worker constructor to Creates a worker instance |
|
||||
|---|---|
|
||||
|
||||
- example
|
||||
|
||||
```
|
||||
import worker from "@ohos.worker"
|
||||
const worker = new worker.Worker("workers/worker.js");
|
||||
```
|
||||
|
||||
2. postMessage(message:Object, options?:PostMessageOptions): void;
|
||||
描述:
|
||||
向worker线程发送消息,数据的传输采用结构化算法
|
||||
2.
|
||||
|
||||
使用方法:
|
||||
- name
|
||||
|
||||
示例一
|
||||
| postMessage(message:Object, options?:PostMessageOptions) | Sends a message to the worker thread |
|
||||
|---|---|
|
||||
| postMessage(message:Object, transfer:ArrayBuffer[]) | Sends a message to the worker thread |
|
||||
|
||||
- example
|
||||
|
||||
```
|
||||
// example 1
|
||||
import worker from "@ohos.worker"
|
||||
const worker = new worker.Worker("workers/worker.js");
|
||||
worker.postMessage("hello world");
|
||||
|
||||
示例二
|
||||
|
||||
// example 2
|
||||
import worker from "@ohos.worker"
|
||||
const worker = new worker.Worker("workers/worker.js");
|
||||
var buffer = new ArrayBuffer(8)
|
||||
var buffer = new ArrayBuffer(8);
|
||||
worker.postMessage(buffer, [buffer]);
|
||||
```
|
||||
|
||||
3. on(type:string, listener:EventListener):void;
|
||||
描述:
|
||||
向worker添加一个事件监听
|
||||
3.
|
||||
|
||||
使用方法:
|
||||
- name
|
||||
|
||||
| on(type:string, listener:EventListener) | Adds an event listener to the worker |
|
||||
|---|---|
|
||||
|
||||
- example
|
||||
|
||||
```
|
||||
import worker from "@ohos.worker"
|
||||
const worker = new worker.Worker("workers/worker.js");
|
||||
worker.on("alert", (e)=>{
|
||||
console.log("worker on...");
|
||||
console.log("worker on...");
|
||||
})
|
||||
```
|
||||
|
||||
4. once(type:string, listener:EventListener):void;
|
||||
描述:
|
||||
向worker添加一个事件监听, 事件监听只执行一次,一旦出发便会自动删除
|
||||
4.
|
||||
|
||||
使用方法
|
||||
- name
|
||||
|
||||
| once(type:string, listener:EventListener) | Adds an event listener to the worker and
|
||||
removes the event listener automically after it is invoked once |
|
||||
|---|---|
|
||||
|
||||
- example
|
||||
|
||||
```
|
||||
import worker from "@ohos.worker"
|
||||
const worker = new worker.Worker("workers/worker.js");
|
||||
worker.once("alert", (e)=>{
|
||||
console.log("worker on...");
|
||||
})
|
||||
```
|
||||
|
||||
5. off(type:string, listener?:EventListener):void;
|
||||
描述:
|
||||
删除worker的事件监听
|
||||
5.
|
||||
|
||||
使用方法
|
||||
- name
|
||||
|
||||
| off(type:string, listener?:EventListener) | Removes an event listener to the worker |
|
||||
|---|---|
|
||||
|
||||
- example
|
||||
|
||||
```
|
||||
import worker from "@ohos.worker"
|
||||
const worker = new worker.Worker("workers/worker.js");
|
||||
worker.off("alert");
|
||||
```
|
||||
|
||||
6. terminate():void;
|
||||
描述:
|
||||
关闭worker线程,终止worker发送消息
|
||||
6.
|
||||
|
||||
使用方法
|
||||
- name
|
||||
|
||||
| terminate() | Terminates the worker thread to stop the worker from receiving messages |
|
||||
|---|---|
|
||||
|
||||
- example
|
||||
|
||||
```
|
||||
import worker from "@ohos.worker"
|
||||
const worker = new worker.Worker("workers/worker.js");
|
||||
worker.terminate();
|
||||
```
|
||||
|
||||
7. removeEventListener(type:string, listener?:EventListener):void;
|
||||
描述:
|
||||
删除worker的事件监听
|
||||
7.
|
||||
|
||||
使用方法
|
||||
- name
|
||||
|
||||
| removeEventListener(type:string, listener?:EventListener) | Removes an event defined for the worker |
|
||||
|---|---|
|
||||
|
||||
- example
|
||||
|
||||
```
|
||||
import worker from "@ohos.worker"
|
||||
const worker = new worker.Worker("workers/worker.js");
|
||||
worker.removeEventListener("alert");
|
||||
```
|
||||
|
||||
8. dispatchEvent(event: Event):boolean;
|
||||
描述:
|
||||
分发worker的事件监听
|
||||
8.
|
||||
|
||||
使用方法
|
||||
- name
|
||||
|
||||
| dispatchEvent(event: Event) | Dispatches the event defined for the worker |
|
||||
|---|---|
|
||||
|
||||
- example
|
||||
|
||||
```
|
||||
import worker from "@ohos.worker"
|
||||
const worker = new worker.Worker("workers/worker.js");
|
||||
worker.dispatchEvent({type:"alert"});
|
||||
```
|
||||
|
||||
9. removeAllEventListener(): void;
|
||||
描述:
|
||||
删除worker的所有事件监听
|
||||
9.
|
||||
|
||||
使用方法
|
||||
- name
|
||||
|
||||
| removeAllListener() | Removes all event listeners for the worker |
|
||||
|---|---|
|
||||
|
||||
- example
|
||||
|
||||
```
|
||||
import worker from "@ohos.worker"
|
||||
const worker = new worker.Worker("workers/worker.js");
|
||||
worker.removeAllEventListener();
|
||||
worker.removeAllListener();
|
||||
```
|
||||
|
||||
10. onexit?:(code:number)=>void;
|
||||
描述:
|
||||
worker退出时出发js线程的回调方法
|
||||
##### Attribute
|
||||
|
||||
使用方法
|
||||
1.
|
||||
|
||||
- name
|
||||
|
||||
| onexit?:(code:number)=>void | The onexit attribute of the worker specifies the event handler to be called
|
||||
when the worker exits. The handler is executed in the host thread |
|
||||
|---|---|
|
||||
|
||||
- example
|
||||
|
||||
```
|
||||
import worker from "@ohos.worker"
|
||||
const worker = new worker.Worker("workers/worker.js");
|
||||
worker.onexit = function(e) {
|
||||
console.log("onexit...");
|
||||
}
|
||||
```
|
||||
|
||||
11. onerror?:(ev:ErrorEvent)=>void;
|
||||
描述:
|
||||
worker内部执行js发生异常触发的宿主线程回调
|
||||
2.
|
||||
|
||||
使用方法:
|
||||
- name
|
||||
|
||||
| onerror?:(ev:ErrorEvent)=>void | The onerror attribute of the worker specifies the event handler to be called
|
||||
when an exception occurs during worker execution. The event handler is executed in the host thread |
|
||||
|---|---|
|
||||
|
||||
- example
|
||||
|
||||
```
|
||||
import worker from "@ohos.worker"
|
||||
const worker = new worker.Worker("workers/worker.js");
|
||||
worker.onerror = function(e) {
|
||||
console.log("onerror...");
|
||||
}
|
||||
```
|
||||
|
||||
12. onmessage?:(ev:MessageEvent)=>void;
|
||||
描述:
|
||||
当宿主线程接受到来自其创建的worker消息时,会在worker对象上触发message事件。例如,当worker通过parentPort.postMessage()发送了一条消息
|
||||
3.
|
||||
|
||||
使用方法:
|
||||
- name
|
||||
|
||||
| onmessage?:(ev:MessageEvent)=>void | The onmessage attribute of the worker specifies the event handler to be called
|
||||
then the host thread receives a message created by itself and sent by the worker through the parentPort.postMessage.
|
||||
The event handler is executed in the host thread |
|
||||
|---|---|
|
||||
|
||||
- example
|
||||
|
||||
```
|
||||
import worker from "@ohos.worker"
|
||||
const worker = new worker.Worker("workers/worker.js");
|
||||
worker.onmessage = function(e) {
|
||||
console.log("onmessage...");
|
||||
}
|
||||
```
|
||||
|
||||
13. onmessageerror?:(event:MessageEvent)=>void;
|
||||
描述:
|
||||
worker对象接收到一条无法序列化的消息时,messageerror事件将在该对象上被触发
|
||||
4.
|
||||
|
||||
使用方法:
|
||||
- name
|
||||
|
||||
| onmessageerror?:(event:MessageEvent)=>void | The onmessage attribute of the worker specifies the event handler
|
||||
when the worker receives a message that cannot be serialized. The event handler is executed in the host thread |
|
||||
|---|---|
|
||||
|
||||
- example
|
||||
|
||||
```
|
||||
import worker from "@ohos.worker"
|
||||
const worker = new worker.Worker("workers/worker.js");
|
||||
worker.onmessageerror = function(e) {
|
||||
console.log("onmessageerror...");
|
||||
}
|
||||
```
|
||||
|
||||
二. parentPort介绍
|
||||
描述:
|
||||
worker线程用于与宿主线程通信的Object对象,通过parentPort接口发送消息给主线程、close接口关闭worker线程
|
||||
#### parentPort object description
|
||||
|
||||
接口介绍
|
||||
Object of the worker thread used to communicate with the host thread
|
||||
|
||||
1. parent.postMessage(message:Object, options?:PostMessageOptions): void;
|
||||
描述:
|
||||
worker向宿主线程发送消息
|
||||
##### Interface
|
||||
|
||||
使用方法:
|
||||
main.js
|
||||
1.
|
||||
|
||||
- name
|
||||
|
||||
| postMessage(message:Object, options?:PostMessageOptions) | Send a message to host thread |
|
||||
|---|---|
|
||||
| postMessage(message:Object, transfer:ArrayBuffer[]) | Send a message to host thread |
|
||||
|
||||
- example
|
||||
|
||||
```
|
||||
// main.js
|
||||
import worker from "@ohos.worker"
|
||||
const worker = new worker.Worker("workers/worker.js");
|
||||
worker.postMessage("hello world");
|
||||
|
||||
worker.js
|
||||
// worker.js
|
||||
import worker from "@ohos.worker"
|
||||
const parentPort = worker.parentPort;
|
||||
parentPort.onmessage = function(e) {
|
||||
parentPort.postMessage("hello world from worker.js");
|
||||
}
|
||||
```
|
||||
|
||||
2. parent.close():void
|
||||
描述:
|
||||
关闭worker线程,终止worker接收消息
|
||||
2.
|
||||
|
||||
使用方法:
|
||||
main.js
|
||||
- name
|
||||
|
||||
| close() | Close the worker thread to stop the worker from receiving messages |
|
||||
|---|---|
|
||||
|
||||
- example
|
||||
|
||||
```
|
||||
// main.js
|
||||
import worker from "@ohos.worker"
|
||||
const worker = new worker.Worker("workers/worker.js");
|
||||
worker.postMessage("hello world");
|
||||
|
||||
worker.js
|
||||
// worker.js
|
||||
import worker from "@ohos.worker"
|
||||
const parentPort = worker.parentPort;
|
||||
parentPort.onmessage = function(e) {
|
||||
parentPort.close();
|
||||
}
|
||||
```
|
||||
|
||||
3. parent.onmessage?:(event:MessageEvent)=>void
|
||||
描述:
|
||||
parent接口的onmessage属性表示在消息事件发生时要调用的事件处理程序,即当使用worker.postMessage方法将消息发送至worker时
|
||||
##### Attribute
|
||||
|
||||
使用方法:
|
||||
main.js
|
||||
1.
|
||||
|
||||
- name
|
||||
|
||||
| onmessage?:(event:MessageEvent)=>void | The onmessage attribute of parentPort specifies the event handler to be called
|
||||
then the worker thread receives a message sent by the host thread through worker postMessage.
|
||||
The event handler is executed in the worker thread |
|
||||
|---|---|
|
||||
|
||||
- example
|
||||
|
||||
```
|
||||
// main.js
|
||||
import worker from "@ohos.worker"
|
||||
const worker = new worker.Worker("workers/worker.js");
|
||||
worker.postMessage("hello world");
|
||||
|
||||
worker.js
|
||||
// worker.js
|
||||
import worker from "@ohos.worker"
|
||||
const parentPort = worker.parentPort;
|
||||
parentPort.onmessage = function(e) {
|
||||
console.log("receive main.js message");
|
||||
}
|
||||
```
|
||||
|
||||
4. parentPort.onerror?:(ev: ErrorEvent)=>void;
|
||||
描述:
|
||||
worker线程内部执行js发生异常触发的worker回调
|
||||
2.
|
||||
|
||||
使用方法:
|
||||
main.js
|
||||
- name
|
||||
|
||||
| onerror?:(ev: ErrorEvent)=>void | The onerror attribute of parentPort specifies the event handler to be called
|
||||
when an exception occurs during worker execution. The event handler is executed in the worker thread |
|
||||
|---|---|
|
||||
|
||||
- example
|
||||
|
||||
```
|
||||
// main.js
|
||||
import worker from "@ohos.worker"
|
||||
const worker = new worker.Worker("workers/worker.js");
|
||||
worker.postMessage("hello world");
|
||||
|
||||
worker.js
|
||||
// worker.js
|
||||
import worker from "@ohos.worker"
|
||||
const parentPort = worker.parentPort;
|
||||
parentPort.onerror = function(e) {
|
||||
console.log("onerror...");
|
||||
}
|
||||
|
||||
5. parentPort.onmessageerror?:(event: MessageEvent)=>void;
|
||||
描述:
|
||||
当worker接收到一条无法被反序列化的消息时,messageerror将在该事件上触发
|
||||
```
|
||||
|
||||
使用方法:
|
||||
main.js
|
||||
3.
|
||||
|
||||
- name
|
||||
|
||||
| onmessageerror?:(event: MessageEvent)=>void | The onmessage attribute of parentPort specifies the event handler to be called
|
||||
then the worker receives a message that cannot be deserialized. The event handler is executed in the worker thread. |
|
||||
|---|---|
|
||||
|
||||
- example
|
||||
|
||||
```
|
||||
// main.js
|
||||
import worker from "@ohos.worker"
|
||||
const worker = new worker.Worker("workers/worker.js");
|
||||
worker.postMessage("hello world");
|
||||
|
||||
worker.js
|
||||
// worker.js
|
||||
import worker from "@ohos.worker"
|
||||
const parentPort = worker.parentPort;
|
||||
parentPort.onmessageerror = function(e) {
|
||||
console.log("onmessageerror...");
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Repositories Involved
|
||||
|
||||
- ace_ace_engine
|
||||
- ace_napi
|
||||
|
||||
### License
|
||||
|
||||
Worker is available under [Mozilla license](https://www.mozilla.org/en-US/MPL/), and the documentation is detailed in [documentation](https://gitee.com/openharmony/js_worker_module/blob/master/mozilla_docs.txt). See [LICENSE](https://gitee.com/openharmony/js_worker_module/blob/master/LICENSE) for the full license text.
|
||||
+365
@@ -0,0 +1,365 @@
|
||||
# js_worker_module
|
||||
|
||||
### 简介
|
||||
|
||||
worker能够让js拥有多线程的能力,通过postMessage完成worker线程与宿主线程通信。
|
||||
|
||||
### 接口说明
|
||||
接口实现详见:js_worker_module/jsapi/worker
|
||||
|
||||
#### Worker对象描述
|
||||
|
||||
宿主线程用于与worker线程通信的Object对象。
|
||||
|
||||
##### 接口
|
||||
|
||||
1.
|
||||
|
||||
- 接口名
|
||||
|
||||
|constructor(scriptURL:string, options? WorkerOptions) | 构造函数 |
|
||||
|---|---|
|
||||
|
||||
- 使用示例
|
||||
|
||||
```
|
||||
import worker from "@ohos.worker"
|
||||
const worker = new worker.Worker("workers/worker.js");
|
||||
```
|
||||
|
||||
2.
|
||||
|
||||
- 接口名
|
||||
|
||||
| postMessage(message:Object, options?:PostMessageOptions) | 向worker线程发送消息 |
|
||||
|---|---|
|
||||
| postMessage(message:Object, transfer:ArrayBuffer[]) | 向worker线程发送消息 |
|
||||
|
||||
- 使用示例
|
||||
|
||||
```
|
||||
// 示例一
|
||||
import worker from "@ohos.worker"
|
||||
const worker = new worker.Worker("workers/worker.js");
|
||||
worker.postMessage("hello world");
|
||||
|
||||
// 示例二
|
||||
import worker from "@ohos.worker"
|
||||
const worker = new worker.Worker("workers/worker.js");
|
||||
var buffer = new ArrayBuffer(8);
|
||||
worker.postMessage(buffer, [buffer]);
|
||||
```
|
||||
|
||||
3.
|
||||
|
||||
- 接口名
|
||||
|
||||
| on(type:string, listener:EventListener) | 向worker添加一个事件监听 |
|
||||
|---|---|
|
||||
|
||||
- 使用示例
|
||||
|
||||
```
|
||||
import worker from "@ohos.worker"
|
||||
const worker = new worker.Worker("workers/worker.js");
|
||||
worker.on("alert", (e)=>{
|
||||
console.log("worker on...");
|
||||
})
|
||||
```
|
||||
|
||||
4.
|
||||
|
||||
- 接口名
|
||||
|
||||
| once(type:string, listener:EventListener) | 向worker添加一个事件监听, 事件监听只执行一次便自动删除 |
|
||||
|---|---|
|
||||
|
||||
- 使用示例
|
||||
|
||||
```
|
||||
import worker from "@ohos.worker"
|
||||
const worker = new worker.Worker("workers/worker.js");
|
||||
worker.once("alert", (e)=>{
|
||||
console.log("worker on...");
|
||||
})
|
||||
```
|
||||
|
||||
5.
|
||||
|
||||
- 接口名
|
||||
|
||||
| off(type:string, listener?:EventListener) | 删除worker的事件监听 |
|
||||
|---|---|
|
||||
|
||||
- 使用示例
|
||||
|
||||
```
|
||||
import worker from "@ohos.worker"
|
||||
const worker = new worker.Worker("workers/worker.js");
|
||||
worker.off("alert");
|
||||
```
|
||||
|
||||
6.
|
||||
|
||||
- 接口名
|
||||
|
||||
| terminate() | 关闭worker线程,终止worker发送消息 |
|
||||
|---|---|
|
||||
|
||||
- 使用示例
|
||||
|
||||
```
|
||||
import worker from "@ohos.worker"
|
||||
const worker = new worker.Worker("workers/worker.js");
|
||||
worker.terminate();
|
||||
```
|
||||
|
||||
7.
|
||||
|
||||
- 接口名
|
||||
|
||||
| removeEventListener(type:string, listener?:EventListener) | 删除worker的事件监听 |
|
||||
|---|---|
|
||||
|
||||
- 使用示例
|
||||
|
||||
```
|
||||
import worker from "@ohos.worker"
|
||||
const worker = new worker.Worker("workers/worker.js");
|
||||
worker.removeEventListener("alert");
|
||||
```
|
||||
|
||||
8.
|
||||
|
||||
- 接口名
|
||||
|
||||
| dispatchEvent(event: Event) | 分发定义在worker的事件 |
|
||||
|---|---|
|
||||
|
||||
- 使用示例
|
||||
|
||||
```
|
||||
import worker from "@ohos.worker"
|
||||
const worker = new worker.Worker("workers/worker.js");
|
||||
worker.dispatchEvent({type:"alert"});
|
||||
```
|
||||
|
||||
9.
|
||||
|
||||
- 接口名
|
||||
|
||||
| removeAllListener() | 删除worker的所有事件监听 |
|
||||
|---|---|
|
||||
|
||||
- 使用示例
|
||||
|
||||
```
|
||||
import worker from "@ohos.worker"
|
||||
const worker = new worker.Worker("workers/worker.js");
|
||||
worker.removeAllListener();
|
||||
```
|
||||
|
||||
##### 属性
|
||||
|
||||
1.
|
||||
|
||||
- 属性名
|
||||
|
||||
| onexit?:(code:number)=>void | worker退出时被调用的事件处理程序,处理程序在宿主线程中执行 |
|
||||
|---|---|
|
||||
|
||||
- 使用示例
|
||||
|
||||
```
|
||||
import worker from "@ohos.worker"
|
||||
const worker = new worker.Worker("workers/worker.js");
|
||||
worker.onexit = function(e) {
|
||||
console.log("onexit...");
|
||||
}
|
||||
```
|
||||
|
||||
2.
|
||||
|
||||
- 属性名
|
||||
|
||||
| onerror?:(ev:ErrorEvent)=>void | worker在执行过程中发生异常被调用的事件处理程序,处理程序在宿主线程中执行 |
|
||||
|---|---|
|
||||
|
||||
- 使用示例
|
||||
|
||||
```
|
||||
import worker from "@ohos.worker"
|
||||
const worker = new worker.Worker("workers/worker.js");
|
||||
worker.onerror = function(e) {
|
||||
console.log("onerror...");
|
||||
}
|
||||
```
|
||||
|
||||
3.
|
||||
|
||||
- 属性名
|
||||
|
||||
| onmessage?:(ev:MessageEvent)=>void | 宿主线程收到来自其创建的worker通过parentPort.postMessage接口发送的消息时被调用的事件处理程序, 处理程序在宿主线程中执行 |
|
||||
|---|---|
|
||||
|
||||
- 使用示例
|
||||
|
||||
```
|
||||
import worker from "@ohos.worker"
|
||||
const worker = new worker.Worker("workers/worker.js");
|
||||
worker.onmessage = function(e) {
|
||||
console.log("onmessage...");
|
||||
}
|
||||
```
|
||||
|
||||
4.
|
||||
|
||||
- 属性名
|
||||
|
||||
| onmessageerror?:(event:MessageEvent)=>void | worker对象接收到一条无法序列化的消息时被调用的事件处理程序, 处理程序在宿主线程中执行 |
|
||||
|---|---|
|
||||
|
||||
- 使用示例
|
||||
|
||||
```
|
||||
import worker from "@ohos.worker"
|
||||
const worker = new worker.Worker("workers/worker.js");
|
||||
worker.onmessageerror = function(e) {
|
||||
console.log("onmessageerror...");
|
||||
}
|
||||
```
|
||||
|
||||
#### parentPort对象描述
|
||||
|
||||
worker线程用于与宿主线程通信的Object对象。
|
||||
|
||||
##### 接口
|
||||
|
||||
1.
|
||||
|
||||
- 接口名
|
||||
|
||||
| postMessage(message:Object, options?:PostMessageOptions) | 向宿主线程发送消息 |
|
||||
|---|---|
|
||||
| postMessage(message:Object, transfer:ArrayBuffer[]) | 向宿主线程发送消息 |
|
||||
|
||||
- 使用示例
|
||||
|
||||
```
|
||||
// main.js
|
||||
import worker from "@ohos.worker"
|
||||
const worker = new worker.Worker("workers/worker.js");
|
||||
worker.postMessage("hello world");
|
||||
|
||||
// worker.js
|
||||
import worker from "@ohos.worker"
|
||||
const parentPort = worker.parentPort;
|
||||
parentPort.onmessage = function(e) {
|
||||
parentPort.postMessage("hello world from worker.js");
|
||||
}
|
||||
```
|
||||
|
||||
2.
|
||||
|
||||
- 接口名
|
||||
|
||||
| close() | 关闭worker线程,终止worker接收消息 |
|
||||
|---|---|
|
||||
|
||||
- 使用示例
|
||||
|
||||
```
|
||||
// main.js
|
||||
import worker from "@ohos.worker"
|
||||
const worker = new worker.Worker("workers/worker.js");
|
||||
worker.postMessage("hello world");
|
||||
|
||||
// worker.js
|
||||
import worker from "@ohos.worker"
|
||||
const parentPort = worker.parentPort;
|
||||
parentPort.onmessage = function(e) {
|
||||
parentPort.close();
|
||||
}
|
||||
```
|
||||
|
||||
##### 属性
|
||||
|
||||
1.
|
||||
|
||||
- 属性名
|
||||
|
||||
| onmessage?:(event:MessageEvent)=>void | 宿主线程收到来自其创建的worker通过worker.postMessage接口发送的消息时被调用的事件处理程序,
|
||||
处理程序在worker线程中执行 |
|
||||
|---|---|
|
||||
|
||||
- 使用示例
|
||||
|
||||
```
|
||||
// main.js
|
||||
import worker from "@ohos.worker"
|
||||
const worker = new worker.Worker("workers/worker.js");
|
||||
worker.postMessage("hello world");
|
||||
|
||||
// worker.js
|
||||
import worker from "@ohos.worker"
|
||||
const parentPort = worker.parentPort;
|
||||
parentPort.onmessage = function(e) {
|
||||
console.log("receive main.js message");
|
||||
}
|
||||
```
|
||||
|
||||
2.
|
||||
|
||||
- 属性名
|
||||
|
||||
| onerror?:(ev: ErrorEvent)=>void | worker在执行过程中发生异常被调用的事件处理程序,处理程序在worker线程中执行 |
|
||||
|---|---|
|
||||
|
||||
- 使用示例
|
||||
|
||||
```
|
||||
// main.js
|
||||
import worker from "@ohos.worker"
|
||||
const worker = new worker.Worker("workers/worker.js");
|
||||
worker.postMessage("hello world");
|
||||
|
||||
// worker.js
|
||||
import worker from "@ohos.worker"
|
||||
const parentPort = worker.parentPort;
|
||||
parentPort.onerror = function(e) {
|
||||
console.log("onerror...");
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
3.
|
||||
|
||||
- 属性名
|
||||
|
||||
| onmessageerror?:(event: MessageEvent)=>void | worker对象接收到一条无法被反序列化的消息时被调用的事件处理程序, 处理程序在worker线程中执行 |
|
||||
|---|---|
|
||||
|
||||
- 使用示例
|
||||
|
||||
```
|
||||
// main.js
|
||||
import worker from "@ohos.worker"
|
||||
const worker = new worker.Worker("workers/worker.js");
|
||||
worker.postMessage("hello world");
|
||||
|
||||
// worker.js
|
||||
import worker from "@ohos.worker"
|
||||
const parentPort = worker.parentPort;
|
||||
parentPort.onmessageerror = function(e) {
|
||||
console.log("onmessageerror...");
|
||||
}
|
||||
```
|
||||
|
||||
### 涉及仓
|
||||
|
||||
- ace_ace_engine
|
||||
- ace_napi
|
||||
|
||||
### 许可证
|
||||
|
||||
Worker在[Mozilla许可证](https://www.mozilla.org/en-US/MPL/)下可用,说明文档详见[说明文档](https://gitee.com/openharmony/js_worker_module/blob/master/mozilla_docs.txt)。有关完整的许可证文本,有关完整的许可证文本,请参见[许可证](https://gitee.com/openharmony/js_worker_module/blob/master/LICENSE)
|
||||
@@ -0,0 +1,81 @@
|
||||
|
||||
The definitions of some interfaces implemented in jsapi/workers/worker.cpp are released under Mozilla license.
|
||||
|
||||
The definitions and functions of these interfaces are consistent with the standard interfaces under mozila license,
|
||||
but the implementation of specific functions is independent and self-developed.
|
||||
|
||||
All interfaces are described in d.ts, the following is the interface written in d.ts under to Mozilla license
|
||||
|
||||
export interface WorkerOptions {
|
||||
type?: "classic" | "module";
|
||||
name?: string;
|
||||
shared?: boolean;
|
||||
}
|
||||
|
||||
export interface Event {
|
||||
readonly type: string;
|
||||
readonly timeStamp: number;
|
||||
}
|
||||
|
||||
interface ErrorEvent extends Event {
|
||||
readonly message: string;
|
||||
readonly filename: string;
|
||||
readonly lineno: number;
|
||||
readonly colno: number;
|
||||
readonly error: Object;
|
||||
}
|
||||
|
||||
declare interface MessageEvent<T = Object> extends Event {
|
||||
readonly data: T;
|
||||
}
|
||||
|
||||
export interface PostMessageOptions {
|
||||
transfer?: Object[];
|
||||
}
|
||||
|
||||
export interface EventListener {
|
||||
(evt: Event): void | Promise<void>;
|
||||
}
|
||||
|
||||
type MessageType = "message" | "messageerror";
|
||||
|
||||
declare interface EventTarget {
|
||||
addEventListener(
|
||||
type: string,
|
||||
listener: EventListener
|
||||
): void;
|
||||
dispatchEvent(event: Event): boolean;
|
||||
removeEventListener(
|
||||
type: string,
|
||||
callback?: EventListener
|
||||
): void;
|
||||
removeAllListener(): void;
|
||||
}
|
||||
|
||||
declare interface WorkerGlobalScope extends EventTarget {
|
||||
readonly name: string;
|
||||
onerror?: (ev: ErrorEvent) => void;
|
||||
readonly self: WorkerGlobalScope & typeof globalThis;
|
||||
}
|
||||
|
||||
declare interface DedicatedWorkerGlobalScope extends WorkerGlobalScope {
|
||||
onmessage?: (this: DedicatedWorkerGlobalScope, ev: MessageEvent) => void;
|
||||
onmessageerror?: (this: DedicatedWorkerGlobalScope, ev: MessageEvent) => void;
|
||||
close(): void;
|
||||
postMessage(messageObject: Object, transfer: Transferable[]): void;
|
||||
postMessage(messageObject: Object, options?: PostMessageOptions): void;
|
||||
}
|
||||
|
||||
declare namespace worker {
|
||||
class Worker extends EventTarget {
|
||||
constructor(scriptURL: string, options?: WorkerOptions);
|
||||
onexit?: (code: number) => void;
|
||||
onerror?: (err: ErrorEvent) => void;
|
||||
onmessage?: (event: MessageEvent) => void;
|
||||
onmessageerror?: (event: MessageEvent) => void;
|
||||
postMessage(message: Object, transfer: ArrayBuffer[]): void;
|
||||
postMessage(message: Object, options?: PostMessageOptions): void;
|
||||
terminate(): void;
|
||||
}
|
||||
const parentPort: DedicatedWorkerGlobalScope;
|
||||
}
|
||||
Reference in New Issue
Block a user