“248d19e5584d49368d2939df2f5e1a27e26839d6”上不存在“ppcls/git@gitcode.net:paddlepaddle/PaddleClas.git”
提交 45c20e85 编写于 作者: W wangzhaoyong

fixed 7df78f9a from https://gitee.com/wang_zhaoyong/docs/pulls/15668

taskpool api document add

1. add @concurrent
2. Stage model project and compilermode should be esmodule
Signed-off-by: Nwangzhaoyong <wangzhaoyong@huawei.com>
Change-Id: I146d55ac2ba5ce4b74f0eb27bdd49a2091cdd3c1
上级 e4f02441
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
## 导入模块 ## 导入模块
```js ```ts
import taskpool from '@ohos.taskpool'; import taskpool from '@ohos.taskpool';
``` ```
...@@ -58,9 +58,9 @@ Task的构造函数。 ...@@ -58,9 +58,9 @@ Task的构造函数。
**示例:** **示例:**
```js ```ts
@Concurrent
function func(args) { function func(args) {
"use concurrent"
console.log("func: " + args); console.log("func: " + args);
return args; return args;
} }
...@@ -110,9 +110,9 @@ execute(func: Function, ...args: unknown[]): Promise\<unknown> ...@@ -110,9 +110,9 @@ execute(func: Function, ...args: unknown[]): Promise\<unknown>
**示例:** **示例:**
```js ```ts
@Concurrent
function func(args) { function func(args) {
"use concurrent"
console.log("func: " + args); console.log("func: " + args);
return args; return args;
} }
...@@ -158,9 +158,9 @@ execute(task: Task, priority?: Priority): Promise\<unknown> ...@@ -158,9 +158,9 @@ execute(task: Task, priority?: Priority): Promise\<unknown>
**示例:** **示例:**
```js ```ts
@Concurrent
function func(args) { function func(args) {
"use concurrent"
console.log("func: " + args); console.log("func: " + args);
return args; return args;
} }
...@@ -199,9 +199,9 @@ cancel(task: Task): void ...@@ -199,9 +199,9 @@ cancel(task: Task): void
**示例:** **示例:**
```js ```ts
@Concurrent
function func(args) { function func(args) {
"use concurrent"
console.log("func: " + args); console.log("func: " + args);
return args; return args;
} }
...@@ -209,7 +209,11 @@ function func(args) { ...@@ -209,7 +209,11 @@ function func(args) {
async function taskpoolTest() { async function taskpoolTest() {
let task = new taskpool.Task(func, 100); let task = new taskpool.Task(func, 100);
let value = await taskpool.execute(task); let value = await taskpool.execute(task);
taskpool.cancel(task); try {
taskpool.cancel(task);
} catch (e) {
console.log("taskpool.cancel occur error:" + e);
}
} }
taskpoolTest(); taskpoolTest();
...@@ -221,12 +225,19 @@ taskpoolTest(); ...@@ -221,12 +225,19 @@ taskpoolTest();
序列化支持类型包括:All Primitive Type(不包括symbol)、Date、String、RegExp、Array、Map、Set、Object、ArrayBuffer、TypedArray。 序列化支持类型包括:All Primitive Type(不包括symbol)、Date、String、RegExp、Array、Map、Set、Object、ArrayBuffer、TypedArray。
### 注意事项 ### 注意事项
taskpool任务只支持引用入参传递或者import的变量,不支持使用闭包变量。 - 仅支持在Stage模型且module的compileMode为esmodule的project中使用taskpool api。确认module的compileMode方法:查看当前module的build-profile.json5,在buildOption中补充"compileMode": "esmodule"。
- taskpool任务只支持引用入参传递或者import的变量,不支持使用闭包变量,使用装饰器@Concurrent进行拦截。
- taskpool任务只支持普通函数或者async函数,不支持类成员函数或者匿名函数,使用装饰器@Concurrent进行拦截。
- 装饰器@Concurrent仅支持在ets文件使用,在ts文件中创建taskpool任务需使用"use concurrent"。
```js ### 简单使用
// 1. 引用入参传递
**示例一**
```ts
// 支持普通函数、引用入参传递
@Concurrent
function func(args) { function func(args) {
"use concurrent"
console.log("func: " + args); console.log("func: " + args);
return args; return args;
} }
...@@ -245,17 +256,19 @@ async function taskpoolTest() { ...@@ -245,17 +256,19 @@ async function taskpoolTest() {
taskpoolTest(); taskpoolTest();
``` ```
```js **示例二**
// 2. 引用import变量
// b.ts ```ts
// b.ets
export var c = 2000; export var c = 2000;
```
```ts
// 引用import变量
// a.ets(与b.ets位于同一目录中)
import { c } from "./b";
// a.ts(与b.ts同目录) @Concurrent
import { c } from './b'
function test(a) { function test(a) {
"use concurrent"
console.log(a); console.log(a);
console.log(c); console.log(c);
return a; return a;
...@@ -273,4 +286,64 @@ async function taskpoolTest() { ...@@ -273,4 +286,64 @@ async function taskpoolTest() {
} }
taskpoolTest(); taskpoolTest();
```
**示例三**
```ts
// 支持async函数
@Concurrent
async function task() {
let ret = await Promise.all([
new Promise(resolve => setTimeout(resolve, 1000, "resolved"))
]);
return ret;
}
async function taskpoolTest() {
taskpool.execute(task).then((result) => {
console.log("TaskPoolTest task result: " + result);
});
}
taskpoolTest();
```
**示例四**
```ts
// 在ts文件中创建taskpool任务需使用"use concurrent"
// c.ts
function test1(n) {
"use concurrent"
return n;
}
export async function taskpoolTest1() {
console.log("taskpoolTest1 start");
var task = new taskpool.Task(test1, 100);
var result = await taskpool.execute(task);
console.log("taskpoolTest1 result:" + result);
}
async function test2() {
"use concurrent"
var ret = await Promise.all([
new Promise(resolve => setTimeout(resolve, 1000, "resolved"))
]);
return ret;
}
export async function taskpoolTest2() {
console.log("taskpoolTest2 start");
taskpool.execute(test2).then((result) => {
console.log("TaskPoolTest2 result: " + result);
});
}
```
```ts
// a.ets(与c.ts在同一目录中)
import { taskpoolTest1, taskpoolTest2 } from "./c";
taskpoolTest1();
taskpoolTest2();
``` ```
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册