HarmonyOS API:@ohos.worker (启动一个Worker)

joytrian
发布于 2023-4-11 18:06
浏览
0收藏

版本:v3.1 Beta

@ohos.worker (启动一个Worker)

更新时间: 2023-02-17 09:19


Worker是与主线程并行的独立线程。创建Worker的线程称之为宿主线程,Worker自身的线程称之为Worker线程。创建Worker传入的url文件在Worker线程中执行,可以处理耗时操作但不可以直接操作UI。


Worker主要作用是为应用程序提供一个多线程的运行环境,可满足应用程序在执行过程中与主线程分离,在后台线程中运行一个脚本操作耗时操作,极大避免类似于计算密集型或高延迟的任务阻塞主线程的运行。由于Worker一旦被创建则不会主动被销毁,若不处于任务状态一直运行,在一定程度上会造成资源的浪费,应及时关闭空闲的Worker。


Worker的上下文对象和主线程的上下文对象是不同的,Worker线程不支持UI操作。


说明

本模块首批接口从API version 7 开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

导入模块

import worker from '@ohos.worker';

属性

系统能力: SystemCapability.Utils.Lang

名称

类型

可读

可写

说明

workerPort9+

​ThreadWorkerGlobalScope​

worker线程用于与宿主线程通信的对象。

parentPort(deprecated)

​DedicatedWorkerGlobalScope​

worker线程用于与宿主线程通信的对象。

此属性从API version 7开始支持,从API version 9 开始废弃。

建议使用workerPort9+替代。

WorkerOptions

Worker构造函数的选项信息,用于为Worker添加其他信息。

系统能力: SystemCapability.Utils.Lang

名称

类型

可读

可写

说明

type

"classic" | "module"

Worker执行脚本的模式类型,默认为classic类型,暂不支持module类型。

name

string

Worker的名称。

shared

boolean

暂不支持共享Worker功能。

ThreadWorker9+

使用以下方法前,均需先构造ThreadWorker实例,ThreadWorker类继承​​WorkerEventTarget​​。

constructor9+

constructor(scriptURL: string, options?: WorkerOptions)

ThreadWorker构造函数。

系统能力: SystemCapability.Utils.Lang

参数:

参数名

类型

必填

说明

scriptURL

string

Worker执行脚本的路径。

在FA和Stage模型下,DevEco Studio新建Worker工程路径分别存在以下两种情况:

(a) worker脚本所在目录与pages目录同级。

(b) worker脚本所在目录与pages目录不同级。

options

​WorkerOptions​

Worker构造的选项。

返回值:

类型

说明

ThreadWorker

执行ThreadWorker构造函数生成的ThreadWorker对象,失败则返回undefined。

错误码:

以下错误码的详细介绍请参见​​语言基础类库错误码​​。

错误码ID

错误信息

10200003

Worker initialization failure.

10200007

The worker file patch is invalid path.

示例:

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模型:

  "buildOption": {
    "sourceOption": {
      "workers": [
        "./src/main/ets/MainAbility/workers/worker.ts"
      ]
    }
  }

Stage模型:

  "buildOption": {
    "sourceOption": {
      "workers": [
        "./src/main/ets/workers/worker.ts"
      ]
    }
  }

(2) 目录不同级

FA模型:

  "buildOption": {
    "sourceOption": {
      "workers": [
        "./src/main/ets/workers/worker.ts"
      ]
    }
  }

Stage模型:

  "buildOption": {
    "sourceOption": {
      "workers": [
        "./src/main/ets/pages/workers/worker.ts"
      ]
    }
  }

postMessage9+

postMessage(message: Object, transfer: ArrayBuffer[]): void;

向Worker线程发送数据,数据类型必须是序列化所支持的类型。序列化支持类型见其他说明。

系统能力: SystemCapability.Utils.Lang

参数:

参数名

类型

必填

说明

message

Object

发送至Worker的数据。

transfer

ArrayBuffer[]

可传递 ArrayBuffer 的实例对象,数组中不可传入null。

错误码:

以下错误码的详细介绍请参见​​语言基础类库错误码​​。

错误码ID

错误信息

10200004

Worker instance is not running.

10200006

Serializing an uncaught exception failed.

示例:

const workerInstance = new worker.ThreadWorker("workers/worker.js");

workerInstance.postMessage("hello world");

var buffer = new ArrayBuffer(8);
workerInstance.postMessage(buffer, [buffer]);

postMessage9+

postMessage(message: Object, options?: PostMessageOptions): void

向Worker线程发送数据,数据类型必须是序列化所支持的类型。序列化支持类型见其他说明。

系统能力: SystemCapability.Utils.Lang

参数:

参数名

类型

必填

说明

message

Object

发送至Worker的数据。

options

​PostMessageOptions​

可转移对象是 ArrayBuffer 的实例对象。transferList数组中不可传入null。

错误码:

以下错误码的详细介绍请参见​​语言基础类库错误码​​。

错误码ID

错误信息

10200004

Worker instance is not running.

10200006

Serializing an uncaught exception failed.

示例:

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添加一个事件监听,该接口与​​addEventListener9+​接口功能一致。

系统能力: SystemCapability.Utils.Lang

参数:

参数名

类型

必填

说明

type

string

监听的事件类型。

listener

​WorkerEventListener​

回调的事件。回调事件。

错误码:

以下错误码的详细介绍请参见​​语言基础类库错误码​​。

错误码ID

错误信息

10200004

Worker instance is not running.

10200005

The invoked API is not supported in workers.

示例:

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​

回调的事件。回调事件。

错误码:

以下错误码的详细介绍请参见​​语言基础类库错误码​​。

错误码ID

错误信息

10200004

Worker instance is not running.

10200005

The invoked API is not supported in workers.

示例:

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的事件监听,该接口与​​removeEventListener9+​接口功能一致。

系统能力: SystemCapability.Utils.Lang

参数:

参数名

类型

必填

说明

type

string

需要删除的事件类型。

listener

​WorkerEventListener​

回调的事件。删除的回调事件。

错误码:

以下错误码的详细介绍请参见​​语言基础类库错误码​​。

错误码ID

错误信息

10200004

Worker instance is not running.

10200005

The invoked API is not supported in workers.

示例:

const workerInstance = new worker.ThreadWorker("workers/worker.js");
//使用on接口、once接口或addEventListener接口创建“alert”事件,使用off接口删除事件。
workerInstance.off("alert");

terminate9+

terminate(): void

销毁Worker线程,终止Worker接收消息。

系统能力: SystemCapability.Utils.Lang

错误码:

以下错误码的详细介绍请参见​​语言基础类库错误码​​。

错误码ID

错误信息

10200004

Worker instance is not running.

示例:

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。

错误码:

以下错误码的详细介绍请参见​​语言基础类库错误码​​。

错误码ID

错误信息

10200004

Worker instance is not running.

10200005

The invoked API is not supported in workers.

示例:

const workerInstance = new worker.ThreadWorker("workers/worker.js");
workerInstance.onexit = function(e) {
    console.log("onexit");
}

//onexit被执行两种方式:
//主线程:
workerInstance.terminate();

//worker线程:
//parentPort.close()

onerror9+

onerror?: (err: ErrorEvent) => void

Worker对象的onerror属性表示Worker在执行过程中发生异常被调用的事件处理程序,处理程序在宿主线程中执行。

系统能力: SystemCapability.Utils.Lang

参数:

参数名

类型

必填

说明

err

​ErrorEvent​

异常数据。

错误码:

以下错误码的详细介绍请参见​​语言基础类库错误码​​。

错误码ID

错误信息

10200004

Worker instance is not running.

10200005

The invoked API is not supported in workers.

示例:

const workerInstance = new worker.ThreadWorker("workers/worker.js");
workerInstance.onerror = function(e) {
    console.log("onerror");
}

onmessage9+

onmessage?: (event: MessageEvents) => void

Worker对象的onmessage属性表示宿主线程接收到来自其创建的Worker通过parentPort.postMessage接口发送的消息时被调用的事件处理程序,处理程序在宿主线程中执行。

系统能力: SystemCapability.Utils.Lang

参数:

参数名

类型

必填

说明

event

​MessageEvents​

收到的Worker消息数据。

错误码:

以下错误码的详细介绍请参见​​语言基础类库错误码​​。

错误码ID

错误信息

10200004

Worker instance is not running.

10200005

The invoked API is not supported in workers.

示例:

const workerInstance = new worker.ThreadWorker("workers/worker.js");
workerInstance.onmessage = function(e) {
    // e : MessageEvents, 用法如下:
    // let data = e.data;
    console.log("onmessage");
}

onmessageerror9+

onmessageerror?: (event: MessageEvents) => void

Worker对象的onmessageerror属性表示当Worker对象接收到一条无法被序列化的消息时被调用的事件处理程序,处理程序在宿主线程中执行。

系统能力: SystemCapability.Utils.Lang

参数:

参数名

类型

必填

说明

event

​MessageEvents​

异常数据。

错误码:

以下错误码的详细介绍请参见​​语言基础类库错误码​​。

错误码ID

错误信息

10200004

Worker instance is not running.

10200005

The invoked API is not supported in workers.

示例:

const workerInstance = new worker.ThreadWorker("workers/worker.js");
workerInstance.onmessageerror= function(e) {
    console.log("onmessageerror");
}

addEventListener9+

addEventListener(type: string, listener: WorkerEventListener): void

向Worker添加一个事件监听,该接口与​​on9+​接口功能一致。

系统能力: SystemCapability.Utils.Lang

参数:

参数名

类型

必填

说明

type

string

监听的事件类型。

listener

​WorkerEventListener​

回调的事件。

错误码:

以下错误码的详细介绍请参见​​语言基础类库错误码​​。

错误码ID

错误信息

10200004

Worker instance is not running.

10200005

The invoked API is not supported in workers.

示例:

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的事件监听,该接口与​​off9+​接口功能一致。

系统能力: SystemCapability.Utils.Lang

参数:

参数名

类型

必填

说明

type

string

需要删除的监听事件类型。

callback

​WorkerEventListener​

回调的事件。删除的回调事件。

错误码:

以下错误码的详细介绍请参见​​语言基础类库错误码​​。

错误码ID

错误信息

10200004

Worker instance is not running.

示例:

const workerInstance = new worker.ThreadWorker("workers/worker.js");
workerInstance.addEventListener("alert", (e)=>{
    console.log("alert listener callback");
})
workerInstance.removeEventListener("alert");

dispatchEvent9+

dispatchEvent(event: Event): boolean

分发定义在Worker的事件。

系统能力: SystemCapability.Utils.Lang

参数:

参数名

类型

必填

说明

event

​Event​

需要分发的事件。

返回值:

类型

说明

boolean

分发的结果,false表示分发失败。

错误码:

以下错误码的详细介绍请参见​​语言基础类库错误码​​。

错误码ID

错误信息

10200004

Worker instance is not running.

示例:

const workerInstance = new worker.ThreadWorker("workers/worker.js");
//用法一:
workerInstance.on("alert_on", (e)=>{
    console.log("alert listener callback");
})
workerInstance.once("alert_once", (e)=>{
    console.log("alert listener callback");
})
workerInstance.addEventListener("alert_add", (e)=>{
    console.log("alert listener callback");
})

//once接口创建的事件执行一次便会删除。
workerInstance.dispatchEvent({type:"alert_once", timeStamp:0});//timeStamp暂未支持。
//on接口创建的事件可以一直被分发,不能主动删除。
workerInstance.dispatchEvent({type:"alert_on", timeStamp:0});
workerInstance.dispatchEvent({type:"alert_on", timeStamp:0});
//addEventListener接口创建的事件可以一直被分发,不能主动删除。
workerInstance.dispatchEvent({type:"alert_add", timeStamp:0});
workerInstance.dispatchEvent({type:"alert_add", timeStamp:0});

//用法二:
//event类型的type支持自定义,同时存在"message"/"messageerror"/"error"特殊类型,如下所示
//当type = "message",onmessage接口定义的方法同时会执行。
//当type = "messageerror",onmessageerror接口定义的方法同时会执行。
//当type = "error",onerror接口定义的方法同时会执行。
//若调用removeEventListener接口或者off接口取消事件时,能且只能取消使用addEventListener/on/once创建的事件。

workerInstance.addEventListener("message", (e)=>{
    console.log("message listener callback");
})
workerInstance.onmessage = function(e) {
    console.log("onmessage : message listener callback");
}
//调用dispatchEvent分发“message”事件,addEventListener和onmessage中定义的方法都会被执行。
workerInstance.dispatchEvent({type:"message", timeStamp:0});

removeAllListener9+

removeAllListener(): void

删除Worker所有的事件监听。

系统能力: SystemCapability.Utils.Lang

错误码:

以下错误码的详细介绍请参见​​语言基础类库错误码​​。

错误码ID

错误信息

10200004

Worker instance is not running.

示例:

const workerInstance = new worker.ThreadWorker("workers/worker.js");
workerInstance.addEventListener("alert", (e)=>{
    console.log("alert listener callback");
})
workerInstance.removeAllListener();

WorkerEventTarget9+

addEventListener9+

addEventListener(type: string, listener: WorkerEventListener): void

向Worker添加一个事件监听,该接口与​​on9+​接口功能一致。

系统能力: SystemCapability.Utils.Lang

参数:

参数名

类型

必填

说明

type

string

监听的事件类型。

listener

​WorkerEventListener​

回调的事件。

错误码:

以下错误码的详细介绍请参见​​语言基础类库错误码​​。

错误码ID

错误信息

10200004

Worker instance is not running.

10200005

The invoked API is not supported in workers.

示例:

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的事件监听,该接口与​​off9+​接口功能一致。

系统能力: SystemCapability.Utils.Lang

参数:

参数名

类型

必填

说明

type

string

需要删除的监听事件类型。

callback

​WorkerEventListener​

回调的事件。删除的回调事件。

错误码:

以下错误码的详细介绍请参见​​语言基础类库错误码​​。

错误码ID

错误信息

10200004

Worker instance is not running.

示例:

const workerInstance = new worker.ThreadWorker("workers/worker.js");
workerInstance.addEventListener("alert", (e)=>{
    console.log("alert listener callback");
})
workerInstance.removeEventListener("alert");

dispatchEvent9+

dispatchEvent(event: Event): boolean

分发定义在Worker的事件。

系统能力: SystemCapability.Utils.Lang

参数:

参数名

类型

必填

说明

event

​Event​

需要分发的事件。

返回值:

类型

说明

boolean

分发的结果,false表示分发失败。

错误码:

以下错误码的详细介绍请参见​​语言基础类库错误码​​。

错误码ID

错误信息

10200004

Worker instance is not running.

示例:

const workerInstance = new worker.ThreadWorker("workers/worker.js");
//用法一:
workerInstance.on("alert_on", (e)=>{
    console.log("alert listener callback");
})
workerInstance.once("alert_once", (e)=>{
    console.log("alert listener callback");
})
workerInstance.addEventListener("alert_add", (e)=>{
    console.log("alert listener callback");
})

//once接口创建的事件执行一次便会删除。
workerInstance.dispatchEvent({type:"alert_once", timeStamp:0});//timeStamp暂未支持。
//on接口创建的事件可以一直被分发,不能主动删除。
workerInstance.dispatchEvent({type:"alert_on", timeStamp:0});
workerInstance.dispatchEvent({type:"alert_on", timeStamp:0});
//addEventListener接口创建的事件可以一直被分发,不能主动删除。
workerInstance.dispatchEvent({type:"alert_add", timeStamp:0});
workerInstance.dispatchEvent({type:"alert_add", timeStamp:0});

//用法二:
//event类型的type支持自定义,同时存在"message"/"messageerror"/"error"特殊类型,如下所示
//当type = "message",onmessage接口定义的方法同时会执行。
//当type = "messageerror",onmessageerror接口定义的方法同时会执行。
//当type = "error",onerror接口定义的方法同时会执行。
//若调用removeEventListener接口或者off接口取消事件时,能且只能取消使用addEventListener/on/once创建的事件。

workerInstance.addEventListener("message", (e)=>{
    console.log("message listener callback");
})
workerInstance.onmessage = function(e) {
    console.log("onmessage : message listener callback");
}
//调用dispatchEvent分发“message”事件,addEventListener和onmessage中定义的方法都会被执行。
workerInstance.dispatchEvent({type:"message", timeStamp:0});

removeAllListener9+

removeAllListener(): void

删除Worker所有的事件监听。

系统能力: SystemCapability.Utils.Lang

错误码:

以下错误码的详细介绍请参见​​语言基础类库错误码​​。

错误码ID

错误信息

10200004

Worker instance is not running.

示例:

const workerInstance = new worker.ThreadWorker("workers/worker.js");
workerInstance.addEventListener("alert", (e)=>{
    console.log("alert listener callback");
})
workerInstance.removeAllListener();

ThreadWorkerGlobalScope9+

Worker线程用于与宿主线程通信的类,通过postMessage接口发送消息给宿主线程、close接口销毁Worker线程。ThreadWorkerGlobalScope类继承​​GlobalScope9+​。

postMessage9+

postMessage(messageObject: Object, transfer: ArrayBuffer[]): void;

Worker线程向宿主线程发送消息。

系统能力: SystemCapability.Utils.Lang

参数:

参数名

类型

必填

说明

message

Object

发送至宿主线程的数据。

transfer

ArrayBuffer[]

可传输对象是ArrayBuffer的实例对象,数组中不可传入null。

错误码:

以下错误码的详细介绍请参见​​语言基础类库错误码​​。

错误码ID

错误信息

10200004

Worker instance is not running.

10200006

Serializing an uncaught exception failed.

示例:

// 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");
}

// worker.js
import worker from '@ohos.worker';
const workerPort = worker.workerPort;
workerPort.onmessage = function(e){
    // let data = e.data;
    var buffer = new ArrayBuffer(8);
    workerPort.postMessage(buffer, [buffer]);
}

postMessage9+

postMessage(messageObject: Object, options?: PostMessageOptions): void

Worker线程向宿主线程发送消息。

系统能力: SystemCapability.Utils.Lang

参数:

参数名

类型

必填

说明

message

Object

发送至宿主线程的数据。

options

​PostMessageOptions​

可转移对象是ArrayBuffer的实例对象。transferList数组中不可传入null。

错误码:

以下错误码的详细介绍请参见​​语言基础类库错误码​​。

错误码ID

错误信息

10200004

Worker instance is not running.

10200006

Serializing an uncaught exception failed.

示例:

// 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");
}

// worker.js
import worker from '@ohos.worker';
const workerPort = worker.workerPort;
workerPort.onmessage = function(e){
    // let data = e.data;
    workerPort.postMessage("receive data from main.js");
}

close9+

close(): void

销毁Worker线程,终止Worker接收消息。

系统能力: SystemCapability.Utils.Lang

错误码:

以下错误码的详细介绍请参见​​语言基础类库错误码​​。

错误码ID

错误信息

10200004

Worker instance is not running.

示例:

// main.js
import worker from '@ohos.worker';
const workerInstance = new worker.ThreadWorker("workers/worker.js");

// worker.js
import worker from '@ohos.worker';
const workerPort = worker.workerPort;
workerPort.onmessage = function(e) {
    workerPort.close()
}

onmessage9+

onmessage?: (this: ThreadWorkerGlobalScope, ev: MessageEvents) => void

DedicatedWorkerGlobalScope的onmessage属性表示Worker线程收到来自其宿主线程通过postMessage接口发送的消息时被调用的事件处理程序,处理程序在Worker线程中执行。

系统能力: SystemCapability.Utils.Lang

参数:

参数名

类型

必填

说明

this

​ThreadWorkerGlobalScope​

指向调用者对象。

ev

​MessageEvents​

收到宿主线程发送的数据。

错误码:

以下错误码的详细介绍请参见​​语言基础类库错误码​​。

错误码ID

错误信息

10200004

Worker instance is not running.

10200005

The invoked API is not supported in workers.

示例:

// main.js
import worker from '@ohos.worker';
const workerInstance = new worker.ThreadWorker("workers/worker.js");
workerInstance.postMessage("hello world");

// worker.js
import worker from '@ohos.worker';
const workerPort = worker.workerPort;
workerPort.onmessage = function(e) {
    console.log("receive main.js message");
}

onmessageerror9+

onmessageerror?: (this: ThreadWorkerGlobalScope, ev: MessageEvents) => void

DedicatedWorkerGlobalScope的onmessageerror属性表示当Worker对象接收到一条无法被反序列化的消息时被调用的事件处理程序,处理程序在Worker线程中执行。

系统能力: SystemCapability.Utils.Lang

参数:

参数名

类型

必填

说明

this

​ThreadWorkerGlobalScope​

指向调用者对象。

ev

​MessageEvents​

异常数据。

错误码:

以下错误码的详细介绍请参见​​语言基础类库错误码​​。

错误码ID

错误信息

10200004

Worker instance is not running.

10200005

The invoked API is not supported in workers.

示例:

// main.js
import worker from '@ohos.worker';
const workerInstance = new worker.ThreadWorker("workers/worker.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​

回调的事件类。

返回值:

类型

说明

void | Promise<void>

无返回值或者以Promise形式返回。

错误码:

以下错误码的详细介绍请参见​​语言基础类库错误码​​。

错误码ID

错误信息

10200004

Worker instance is not running.

10200005

The invoked API is not supported in workers.

示例:

const workerInstance = new worker.ThreadWorker("workers/worker.js");
workerInstance.addEventListener("alert", (e)=>{
    console.log("alert listener callback");
})

GlobalScope9+

Worker线程自身的运行环境,GlobalScope类继承​​WorkerEventTarget​​。

属性

系统能力: SystemCapability.Utils.Lang

名称

类型

可读

可写

说明

name

string

Worker的名字,new Worker时指定。

self

​GlobalScope​​ & typeof globalThis

GlobalScope本身。

onerror9+

onerror?: (ev: ErrorEvent) => void

GlobalScope的onerror属性表示Worker在执行过程中发生异常被调用的事件处理程序,处理程序在Worker线程中执行。

系统能力: SystemCapability.Utils.Lang

参数:

参数名

类型

必填

说明

ev

​ErrorEvent​

异常数据。

示例:

// main.js
import worker from '@ohos.worker';
const workerInstance = new worker.ThreadWorker("workers/worker.js")

// worker.js
import worker from '@ohos.worker';
const workerPort = worker.workerPort
workerPort.onerror = function(e){
    console.log("worker.js onerror")
}


文章转载自:​​https://developer.harmonyos.com/cn/docs/documentation/doc-references-V3/js-apis-worker-0000001427902752-V3?catalogVersion=V3#ZH-CN_TOPIC_0000001427902752__导入模块​

已于2023-4-11 18:06:43修改
收藏
回复
举报
回复
    相关推荐