Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
ca7e8879
D
Docs
项目概览
OpenHarmony
/
Docs
大约 2 年 前同步成功
通知
161
Star
293
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
ca7e8879
编写于
8月 08, 2022
作者:
O
openharmony_ci
提交者:
Gitee
8月 08, 2022
浏览文件
操作
浏览文件
下载
差异文件
!7789 Optimize js-apis-worker file content.
Merge pull request !7789 from hyq5234/master
上级
86ec14ad
691517ec
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
208 addition
and
64 deletion
+208
-64
zh-cn/application-dev/reference/apis/js-apis-worker.md
zh-cn/application-dev/reference/apis/js-apis-worker.md
+208
-64
未找到文件。
zh-cn/application-dev/reference/apis/js-apis-worker.md
浏览文件 @
ca7e8879
...
@@ -7,7 +7,7 @@ Worker是与主线程并行的独立线程。创建Worker的线程称之为宿
...
@@ -7,7 +7,7 @@ Worker是与主线程并行的独立线程。创建Worker的线程称之为宿
## 导入模块
## 导入模块
```
```
js
import
worker
from
'
@ohos.worker
'
;
import
worker
from
'
@ohos.worker
'
;
```
```
...
@@ -50,7 +50,7 @@ Worker构造函数。
...
@@ -50,7 +50,7 @@ Worker构造函数。
| 参数名 | 类型 | 必填 | 说明 |
| 参数名 | 类型 | 必填 | 说明 |
| --------- | ------------------------------- | ---- | ------------------------------------------------------------ |
| --------- | ------------------------------- | ---- | ------------------------------------------------------------ |
| scriptURL | string | 是 | Worker执行脚本的url
,路径规范:若DevEco Studio新建工程在pages同级下没有workers目录,需要新建workers目录,将脚本文件放入workers目录。 |
| scriptURL | string | 是 | Worker执行脚本的url
。
<br/>
在FA和Stage模型下,DevEco Studio新建Worker工程路径分别存在以下两种情况:
<br/>
(a) workers目录与pages目录同级。
<br/>
(b) workers目录与pages目录不同级。
| options |
[
WorkerOptions
](
#workeroptions
)
| 否 | Worker构造的选项。 |
| options |
[
WorkerOptions
](
#workeroptions
)
| 否 | Worker构造的选项。 |
**返回值:**
**返回值:**
...
@@ -61,11 +61,68 @@ Worker构造函数。
...
@@ -61,11 +61,68 @@ Worker构造函数。
**示例:**
**示例:**
```
```
js
// worker线程创建
// FA模型-目录同级
const
workerInstance
=
new
worker
.
Worker
(
"
workers/worker.js
"
,
{
name
:
"
first worker
"
});
const
workerInstance
=
new
worker
.
Worker
(
"
workers/worker.js
"
,
{
name
:
"
first worker
"
});
// FA模型-目录不同级(以workers目录放置pages目录前一级为例)
const
workerInstance
=
new
worker
.
Worker
(
"
../workers/worker.js
"
,
{
name
:
"
first worker
"
});
// Stage模型-目录同级
const
workerInstance
=
new
worker
.
Worker
(
'
entry/ets/workers/worker.ts
'
);
// Stage模型-目录不同级(以workers目录放置pages目录后一级为例)
const
workerInstance
=
new
worker
.
Worker
(
'
entry/ets/pages/workers/worker.ts
'
);
// 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"
]
}
}
```
```
### postMessage
### postMessage
postMessage(message: Object, options?: PostMessageOptions): void
postMessage(message: Object, options?: PostMessageOptions): void
...
@@ -83,12 +140,9 @@ postMessage(message: Object, options?: PostMessageOptions): void
...
@@ -83,12 +140,9 @@ postMessage(message: Object, options?: PostMessageOptions): void
**示例:**
**示例:**
```
```
js
const
workerInstance
=
new
worker
.
Worker
(
"
workers/worker.js
"
);
const
workerInstance
=
new
worker
.
Worker
(
"
workers/worker.js
"
);
workerInstance
.
postMessage
(
"
hello world
"
);
workerInstance
.
postMessage
(
"
hello world
"
);
```
```
const
workerInstance
=
new
worker
.
Worker
(
"
workers/worker.js
"
);
const
workerInstance
=
new
worker
.
Worker
(
"
workers/worker.js
"
);
var
buffer
=
new
ArrayBuffer
(
8
);
var
buffer
=
new
ArrayBuffer
(
8
);
workerInstance
.
postMessage
(
buffer
,
[
buffer
]);
workerInstance
.
postMessage
(
buffer
,
[
buffer
]);
...
@@ -112,8 +166,8 @@ on(type: string, listener: EventListener): void
...
@@ -112,8 +166,8 @@ on(type: string, listener: EventListener): void
**示例:**
**示例:**
```
```
js
const workerInstance = new worker.Worker("workers/worker.js")
const
workerInstance
=
new
worker
.
Worker
(
"
workers/worker.js
"
)
;
workerInstance
.
on
(
"
alert
"
,
(
e
)
=>
{
workerInstance
.
on
(
"
alert
"
,
(
e
)
=>
{
console
.
log
(
"
alert listener callback
"
);
console
.
log
(
"
alert listener callback
"
);
})
})
...
@@ -137,7 +191,7 @@ once(type: string, listener: EventListener): void
...
@@ -137,7 +191,7 @@ once(type: string, listener: EventListener): void
**示例:**
**示例:**
```
```
js
const
workerInstance
=
new
worker
.
Worker
(
"
workers/worker.js
"
);
const
workerInstance
=
new
worker
.
Worker
(
"
workers/worker.js
"
);
workerInstance
.
once
(
"
alert
"
,
(
e
)
=>
{
workerInstance
.
once
(
"
alert
"
,
(
e
)
=>
{
console
.
log
(
"
alert listener callback
"
);
console
.
log
(
"
alert listener callback
"
);
...
@@ -162,7 +216,7 @@ off(type: string, listener?: EventListener): void
...
@@ -162,7 +216,7 @@ off(type: string, listener?: EventListener): void
**示例:**
**示例:**
```
```
js
const
workerInstance
=
new
worker
.
Worker
(
"
workers/worker.js
"
);
const
workerInstance
=
new
worker
.
Worker
(
"
workers/worker.js
"
);
workerInstance
.
off
(
"
alert
"
);
workerInstance
.
off
(
"
alert
"
);
```
```
...
@@ -178,9 +232,9 @@ terminate(): void
...
@@ -178,9 +232,9 @@ terminate(): void
**示例:**
**示例:**
```
```
js
const workerInstance = new worker.Worker("workers/worker.js")
const
workerInstance
=
new
worker
.
Worker
(
"
workers/worker.js
"
)
;
workerInstance.terminate()
workerInstance
.
terminate
()
;
```
```
...
@@ -200,10 +254,10 @@ Worker对象的onexit属性表示Worker退出时被调用的事件处理程序
...
@@ -200,10 +254,10 @@ Worker对象的onexit属性表示Worker退出时被调用的事件处理程序
**示例:**
**示例:**
```
```
js
const workerInstance = new worker.Worker("workers/worker.js")
const
workerInstance
=
new
worker
.
Worker
(
"
workers/worker.js
"
)
;
workerInstance
.
onexit
=
function
(
e
)
{
workerInstance
.
onexit
=
function
(
e
)
{
console.log("onexit")
console
.
log
(
"
onexit
"
)
;
}
}
```
```
...
@@ -224,10 +278,10 @@ Worker对象的onerror属性表示Worker在执行过程中发生异常被调用
...
@@ -224,10 +278,10 @@ Worker对象的onerror属性表示Worker在执行过程中发生异常被调用
**示例:**
**示例:**
```
```
js
const workerInstance = new worker.Worker("workers/worker.js")
const
workerInstance
=
new
worker
.
Worker
(
"
workers/worker.js
"
)
;
workerInstance
.
onerror
=
function
(
e
)
{
workerInstance
.
onerror
=
function
(
e
)
{
console.log("onerror")
console
.
log
(
"
onerror
"
)
;
}
}
```
```
...
@@ -248,10 +302,12 @@ Worker对象的onmessage属性表示宿主线程接收到来自其创建的Worke
...
@@ -248,10 +302,12 @@ Worker对象的onmessage属性表示宿主线程接收到来自其创建的Worke
**示例:**
**示例:**
```
```
js
const workerInstance = new worker.Worker("workers/worker.js")
const
workerInstance
=
new
worker
.
Worker
(
"
workers/worker.js
"
)
;
workerInstance
.
onmessage
=
function
(
e
)
{
workerInstance
.
onmessage
=
function
(
e
)
{
console.log("onerror")
// e : MessageEvent<T>, 用法如下:
// let data = e.data;
console
.
log
(
"
onmessage
"
);
}
}
```
```
...
@@ -272,10 +328,10 @@ Worker对象的onmessageerror属性表示当Worker对象接收到一条无法被
...
@@ -272,10 +328,10 @@ Worker对象的onmessageerror属性表示当Worker对象接收到一条无法被
**示例:**
**示例:**
```
```
js
const workerInstance = new worker.Worker("workers/worker.js")
const
workerInstance
=
new
worker
.
Worker
(
"
workers/worker.js
"
)
;
workerInstance
.
onmessageerror
=
function
(
e
)
{
workerInstance
.
onmessageerror
=
function
(
e
)
{
console.log("onmessageerror")
console
.
log
(
"
onmessageerror
"
)
;
}
}
```
```
...
@@ -300,8 +356,8 @@ addEventListener(type: string, listener: EventListener): void
...
@@ -300,8 +356,8 @@ addEventListener(type: string, listener: EventListener): void
**示例:**
**示例:**
```
```
js
const workerInstance = new worker.Worker("workers/worker.js")
const
workerInstance
=
new
worker
.
Worker
(
"
workers/worker.js
"
)
;
workerInstance
.
addEventListener
(
"
alert
"
,
(
e
)
=>
{
workerInstance
.
addEventListener
(
"
alert
"
,
(
e
)
=>
{
console
.
log
(
"
alert listener callback
"
);
console
.
log
(
"
alert listener callback
"
);
})
})
...
@@ -325,9 +381,9 @@ removeEventListener(type: string, callback?: EventListener): void
...
@@ -325,9 +381,9 @@ removeEventListener(type: string, callback?: EventListener): void
**示例:**
**示例:**
```
```
js
const workerInstance = new worker.Worker("workers/worker.js")
const
workerInstance
=
new
worker
.
Worker
(
"
workers/worker.js
"
)
;
workerInstance.removeEventListener("alert")
workerInstance
.
removeEventListener
(
"
alert
"
)
;
```
```
...
@@ -353,9 +409,9 @@ dispatchEvent(event: Event): boolean
...
@@ -353,9 +409,9 @@ dispatchEvent(event: Event): boolean
**示例:**
**示例:**
```
```
js
const workerInstance = new worker.Worker("workers/worker.js")
const
workerInstance
=
new
worker
.
Worker
(
"
workers/worker.js
"
)
;
workerInstance.dispatchEvent({type:"alert"})
workerInstance
.
dispatchEvent
({
type
:
"
alert
"
})
;
```
```
...
@@ -369,9 +425,9 @@ removeAllListener(): void
...
@@ -369,9 +425,9 @@ removeAllListener(): void
**示例:**
**示例:**
```
```
js
const workerInstance = new worker.Worker("workers/worker.js")
const
workerInstance
=
new
worker
.
Worker
(
"
workers/worker.js
"
)
;
workerInstance.removeAllListener(
{type:"alert"})
workerInstance
.
removeAllListener
(
);
```
```
...
@@ -397,22 +453,23 @@ Worker向宿主线程发送消息。
...
@@ -397,22 +453,23 @@ Worker向宿主线程发送消息。
**示例:**
**示例:**
```
```
js
// main.js
// main.js
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.js
"
)
;
workerInstance.postMessage("hello world")
workerInstance
.
postMessage
(
"
hello world
"
)
;
workerInstance
.
onmessage
=
function
(
e
)
{
workerInstance
.
onmessage
=
function
(
e
)
{
console.log("receive data from worker.js")
// let data = e.data;
console
.
log
(
"
receive data from worker.js
"
);
}
}
```
```
```
js
```
// worker.js
// worker.js
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
){
parentPort.postMessage("receive data from main.js")
// let data = e.data;
parentPort
.
postMessage
(
"
receive data from main.js
"
);
}
}
```
```
...
@@ -427,13 +484,12 @@ close(): void
...
@@ -427,13 +484,12 @@ close(): void
**示例:**
**示例:**
```
```
js
// main.js
// main.js
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.js
"
);
```
```
```
```
js
// worker.js
// worker.js
import
worker
from
'
@ohos.worker
'
;
import
worker
from
'
@ohos.worker
'
;
const
parentPort
=
worker
.
parentPort
;
const
parentPort
=
worker
.
parentPort
;
...
@@ -459,19 +515,18 @@ DedicatedWorkerGlobalScope的onmessage属性表示Worker线程收到来自其宿
...
@@ -459,19 +515,18 @@ DedicatedWorkerGlobalScope的onmessage属性表示Worker线程收到来自其宿
**示例:**
**示例:**
```
```
js
// main.js
// main.js
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.js
"
);
workerInstance.postMessage("hello world")
workerInstance
.
postMessage
(
"
hello world
"
);
```
```
```
```
js
// worker.js
// worker.js
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.js message
"
)
;
}
}
```
```
...
@@ -492,13 +547,12 @@ DedicatedWorkerGlobalScope的onmessageerror属性表示当Worker对象接收到
...
@@ -492,13 +547,12 @@ DedicatedWorkerGlobalScope的onmessageerror属性表示当Worker对象接收到
**示例:**
**示例:**
```
```
js
// main.js
// main.js
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.js
"
);
```
```
```
```
js
// worker.js
// worker.js
import
worker
from
'
@ohos.worker
'
;
import
worker
from
'
@ohos.worker
'
;
const
parentPort
=
worker
.
parentPort
;
const
parentPort
=
worker
.
parentPort
;
...
@@ -556,7 +610,7 @@ parentPort.onmessageerror= function(e) {
...
@@ -556,7 +610,7 @@ parentPort.onmessageerror= function(e) {
**示例:**
**示例:**
```
```
js
const
workerInstance
=
new
worker
.
Worker
(
"
workers/worker.js
"
);
const
workerInstance
=
new
worker
.
Worker
(
"
workers/worker.js
"
);
workerInstance
.
addEventListener
(
"
alert
"
,
(
e
)
=>
{
workerInstance
.
addEventListener
(
"
alert
"
,
(
e
)
=>
{
console
.
log
(
"
alert listener callback
"
);
console
.
log
(
"
alert listener callback
"
);
...
@@ -620,13 +674,12 @@ WorkerGlobalScope的onerror属性表示Worker在执行过程中发生异常被
...
@@ -620,13 +674,12 @@ WorkerGlobalScope的onerror属性表示Worker在执行过程中发生异常被
**示例:**
**示例:**
```
```
js
// main.js
// main.js
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.js
"
)
```
```
```
js
```
// worker.js
// worker.js
import
worker
from
'
@ohos.worker
'
;
import
worker
from
'
@ohos.worker
'
;
const
parentPort
=
worker
.
parentPort
const
parentPort
=
worker
.
parentPort
...
@@ -634,3 +687,94 @@ parentPort.onerror = function(e){
...
@@ -634,3 +687,94 @@ parentPort.onerror = function(e){
console
.
log
(
"
worker.js onerror
"
)
console
.
log
(
"
worker.js onerror
"
)
}
}
```
```
## 完整示例
### FA模型
```
js
// main.js(同级目录为例)
import
worker
from
'
@ohos.worker
'
;
const
workerInstance
=
new
worker
.
Worker
(
"
workers/worker.ts
"
);
// 创建js和ts文件都可以
// const workerInstance = new worker.Worker("workers/worker.js");
workerInstance
.
postMessage
(
"
123
"
);
workerInstance
.
onmessage
=
function
(
e
)
{
let
data
=
e
.
data
;
console
.
log
(
"
main.js onmessage
"
);
// 接收worker线程信息后执行terminate
workerInstance
.
terminate
();
}
// 在调用terminate后,执行onexit
workerInstance
.
onexit
=
function
()
{
console
.
log
(
"
main.js terminate
"
);
}
```
```
js
// worker.js
import
worker
from
'
@ohos.worker
'
;
const
parentPort
=
worker
.
parentPort
parentPort
.
onmessage
=
function
(
e
)
{
let
data
=
e
.
data
;
console
.
log
(
"
worker.js onmessage
"
);
parentPort
.
postMessage
(
"
123
"
)
}
parentPort
.
onerror
=
function
(
e
)
{
console
.
log
(
"
worker.js onerror
"
);
}
```
build-profile.json5 配置 :
```
json
"buildOption"
:
{
"sourceOption"
:
{
"workers"
:
[
"./src/main/ets/MainAbility/workers/worker.ts"
]
}
}
```
### Stage模型
```
js
// main.js(以不同目录为例)
import
worker
from
'
@ohos.worker
'
;
const
workerInstance
=
new
worker
.
Worker
(
"
entry/ets/pages/workers/worker.ts
"
);
// 创建js和ts文件都可以
// const workerInstance = new worker.Worker("entry/ets/pages/workers/worker.js");
workerInstance
.
postMessage
(
"
123
"
);
workerInstance
.
onmessage
=
function
(
e
)
{
let
data
=
e
.
data
;
console
.
log
(
"
main.js onmessage
"
);
// 接收worker线程信息后执行terminate
workerInstance
.
terminate
();
}
// 在调用terminate后,执行onexit
workerInstance
.
onexit
=
function
()
{
console
.
log
(
"
main.js terminate
"
);
}
```
```
js
// worker.js
import
worker
from
'
@ohos.worker
'
;
const
parentPort
=
worker
.
parentPort
parentPort
.
onmessage
=
function
(
e
)
{
let
data
=
e
.
data
;
console
.
log
(
"
worker.js onmessage
"
);
parentPort
.
postMessage
(
"
123
"
)
}
parentPort
.
onerror
=
function
(
e
)
{
console
.
log
(
"
worker.js onerror
"
);
}
```
build-profile.json5 配置:
```
json
"buildOption"
:
{
"sourceOption"
:
{
"workers"
:
[
"./src/main/ets/pages/workers/worker.ts"
]
}
}
```
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录