diff --git a/zh-cn/application-dev/reference/apis/js-apis-taskpool.md b/zh-cn/application-dev/reference/apis/js-apis-taskpool.md index a67b484f61b77df887e2942115cea0277ea7a8e5..d7d5f519247d83a45085cbb82d55c0481863a646 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-taskpool.md +++ b/zh-cn/application-dev/reference/apis/js-apis-taskpool.md @@ -37,35 +37,32 @@ function printArgs(args) { console.log("printArgs: " + args); return args; } -async function taskpoolPriority() { - let task = new taskpool.Task(printArgs, 100); - - let highCount = 0; - let mediumCount = 0; - let lowCount = 0; - let allCount = 100; - for (let i = 0; i < allCount; i++) { - taskpool.execute(task, taskpool.Priority.LOW).then((res: number) => { - lowCount++; - console.log("taskpool lowCount is :" + lowCount); - }).catch((e) => { - console.error("low task error: " + e); - }) - taskpool.execute(task, taskpool.Priority.MEDIUM).then((res: number) => { - mediumCount++; - console.log("taskpool mediumCount is :" + mediumCount); - }).catch((e) => { - console.error("medium task error: " + e); - }) - taskpool.execute(task, taskpool.Priority.HIGH).then((res: number) => { - highCount++; - console.log("taskpool highCount is :" + highCount); - }).catch((e) => { - console.error("high task error: " + e); - }) - } + +let task = new taskpool.Task(printArgs, 100); +let highCount = 0; +let mediumCount = 0; +let lowCount = 0; +let allCount = 100; +for (let i = 0; i < allCount; i++) { + taskpool.execute(task, taskpool.Priority.LOW).then((res: number) => { + lowCount++; + console.log("taskpool lowCount is :" + lowCount); + }).catch((e) => { + console.error("low task error: " + e); + }) + taskpool.execute(task, taskpool.Priority.MEDIUM).then((res: number) => { + mediumCount++; + console.log("taskpool mediumCount is :" + mediumCount); + }).catch((e) => { + console.error("medium task error: " + e); + }) + taskpool.execute(task, taskpool.Priority.HIGH).then((res: number) => { + highCount++; + console.log("taskpool highCount is :" + highCount); + }).catch((e) => { + console.error("high task error: " + e); + }) } -taskpoolPriority(); ``` ## Task @@ -107,6 +104,74 @@ function printArgs(args) { let task = new taskpool.Task(printArgs, "this is my first Task"); ``` +### isCanceled + +static isCanceled(): boolean + +检查当前正在运行的任务是否已取消。 + +**系统能力:** SystemCapability.Utils.Lang + +**返回值:** + +| 类型 | 说明 | +| ------- | ------------------------------------ | +| boolean | 如果当前正在运行的任务被取消返回true,未被取消返回false。| + +**示例:** + +```ts +@Concurrent +function inspectStatus(arg) { + // do something + ... + if (taskpool.Task.isCanceled()) { + console.log("task has been canceled."); + // do something + ... + return arg + 1; + } + // do something + ... + return arg; +} +``` + +> **说明:**
+> isCanceled方法需要和taskpool.cancel方法搭配使用,如果不调用cancel方法,isCanceled方法默认返回false。 + +**示例:** + +```ts +@Concurrent +function inspectStatus(arg) { + // 第一时间检查取消并回复 + if (taskpool.Task.isCanceled()) { + console.log("task has been canceled before 2s sleep."); + return arg + 2; + } + // 延时2s + var t = Date.now(); + while (Date.now() - t < 2000) { + continue; + } + // 第二次检查取消并作出响应 + if (taskpool.Task.isCanceled()) { + console.log("task has been canceled after 2s sleep."); + return arg + 3; + } + return arg + 1; +} + +let task = new taskpool.Task(inspectStatus, 100); +taskpool.execute(task).then((res)=>{ + console.log("taskpool test result: " + res); +}).catch((err) => { + console.log("taskpool test occur error: " + err); +}); +// 不调用cancel,isCanceled()默认返回false,task执行的结果为101 +``` + ### 属性 **系统能力:** SystemCapability.Utils.Lang @@ -144,7 +209,7 @@ execute(func: Function, ...args: unknown[]): Promise\ | 错误码ID | 错误信息 | | -------- | ----------------------------------------- | | 10200003 | Worker initialization failure. | -| 10200006 | Serializing an uncaught exception failed. | +| 10200006 | An exception occurred during serialization. | | 10200014 | The function is not mark as concurrent. | **示例:** @@ -156,12 +221,9 @@ function printArgs(args) { return args; } -async function taskpoolExecute() { - let value = await taskpool.execute(printArgs, 100); +taskpool.execute(printArgs, 100).then((value) => { console.log("taskpool result: " + value); -} - -taskpoolExecute(); +}); ``` ## taskpool.execute @@ -192,7 +254,7 @@ execute(task: Task, priority?: Priority): Promise\ | 错误码ID | 错误信息 | | -------- | ----------------------------------------- | | 10200003 | Worker initialization failure. | -| 10200006 | Serializing an uncaught exception failed. | +| 10200006 | An exception occurred during serialization. | | 10200014 | The function is not mark as concurrent. | **示例:** @@ -204,13 +266,10 @@ function printArgs(args) { return args; } -async function taskpoolExecute() { - let task = new taskpool.Task(printArgs, 100); - let value = await taskpool.execute(task); +let task = new taskpool.Task(printArgs, 100); +taskpool.execute(task).then((value) => { console.log("taskpool result: " + value); -} - -taskpoolExecute(); +}); ``` ## taskpool.cancel @@ -233,89 +292,51 @@ cancel(task: Task): void | 错误码ID | 错误信息 | | -------- | ------------------------- | -| 10200015 | If the task is not exist. | -| 10200016 | If the task is running. | +| 10200015 | The task does not exist when it is canceled. | +| 10200016 | The task is executing when it is canceled. | -**任务取消成功示例:** +**正在执行的任务取消示例:** ```ts @Concurrent -function printArgs(args) { - console.log("printArgs: " + args); - return args; -} - -async function taskpoolCancel() { - let task = new taskpool.Task(printArgs, 100); - taskpool.execute(task); - try { - taskpool.cancel(task); - } catch (e) { - console.log("taskpool.cancel occur error:" + e); - } +function inspectStatus(arg) { + // 第一时间检查取消并回复 + if (taskpool.Task.isCanceled()) { + console.log("task has been canceled before 2s sleep."); + return arg + 2; + } + // 2s sleep + var t = Date.now(); + while (Date.now() - t < 2000) { + continue; + } + // 第二次检查取消并作出响应 + if (taskpool.Task.isCanceled()) { + console.log("task has been canceled after 2s sleep."); + return arg + 3; + } + return arg + 1; } -taskpoolCancel(); -``` - -**已执行的任务取消失败示例:** - -```ts -@Concurrent -function printArgs(args) { - console.log("printArgs: " + args); - return args; -} - -async function taskpoolCancel() { - let task = new taskpool.Task(printArgs, 100); - let value = taskpool.execute(task); - let start = new Date().getTime(); - while (new Date().getTime() - start < 1000) { // 延时1s,确保任务已执行 - continue; - } - - try { - taskpool.cancel(task); //任务已执行,取消失败 - } catch (e) { - console.log("taskpool.cancel occur error:" + e); - } -} - -taskpoolCancel(); -``` - -**正在执行的任务取消失败示例:** - -```ts -@Concurrent -function printArgs(args) { - console.log("printArgs: " + args); - return args; -} - -async function taskpoolCancel() { - let task1 = new taskpool.Task(printArgs, 100); - let task2 = new taskpool.Task(printArgs, 200); - let task3 = new taskpool.Task(printArgs, 300); - let task4 = new taskpool.Task(printArgs, 400); - let task5 = new taskpool.Task(printArgs, 500); - let task6 = new taskpool.Task(printArgs, 600); - - let res1 = taskpool.execute(task1); - let res2 = taskpool.execute(task2); - let res3 = taskpool.execute(task3); - let res4 = taskpool.execute(task4); - let res5 = taskpool.execute(task5); - let res6 = taskpool.execute(task6); - try { - taskpool.cancel(task1); // task1任务正在执行,取消失败 - } catch (e) { - console.log("taskpool.cancel occur error:" + e); - } -} - -taskpoolCancel(); +let task1 = new taskpool.Task(inspectStatus, 100); +let task2 = new taskpool.Task(inspectStatus, 200); +let task3 = new taskpool.Task(inspectStatus, 300); +let task4 = new taskpool.Task(inspectStatus, 400); +let task5 = new taskpool.Task(inspectStatus, 500); +let task6 = new taskpool.Task(inspectStatus, 600); +taskpool.execute(task1).then((res)=>{ + console.log("taskpool test result: " + res); +}).catch((err) => { + console.log("taskpool test occur error: " + err); +}); +let res2 = taskpool.execute(task2); +let res3 = taskpool.execute(task3); +let res4 = taskpool.execute(task4); +let res5 = taskpool.execute(task5); +let res6 = taskpool.execute(task6); +// 1s后取消task +setTimeout(()=>{ + taskpool.cancel(task1);}, 1000); ``` ## 其他说明 @@ -440,4 +461,84 @@ import { taskpoolTest1, taskpoolTest2 } from "./c"; func1(); func2(); +``` + +**示例五** + +```ts +// 任务取消成功 +@Concurrent +function inspectStatus(arg) { + // 第一时间检查取消并回复 + if (taskpool.Task.isCanceled()) { + console.log("task has been canceled before 2s sleep."); + return arg + 2; + } + // 2s sleep + var t = Date.now(); + while (Date.now() - t < 2000) { + continue; + } + // 第二次检查取消并作出响应 + if (taskpool.Task.isCanceled()) { + console.log("task has been canceled after 2s sleep."); + return arg + 3; + } + return arg + 1; +} + +async function taskpoolCancel() { + let task = new taskpool.Task(inspectStatus, 100); + taskpool.execute(task).then((res)=>{ + console.log("taskpool test result: " + res); + }).catch((err) => { + console.log("taskpool test occur error: " + err); + }); + // 1s后取消task + setTimeout(()=>{ + taskpool.cancel(task);}, 1000); +} + +taskpoolCancel(); +``` + +**示例六** + +```ts +// 已执行的任务取消失败 +@Concurrent +function inspectStatus(arg) { + // 第一时间检查取消并回复 + if (taskpool.Task.isCanceled()) { + return arg + 2; + } + // 延时2s + var t = Date.now(); + while (Date.now() - t < 2000) { + continue; + } + // 第二次检查取消并作出响应 + if (taskpool.Task.isCanceled()) { + return arg + 3; + } + return arg + 1; +} + +async function taskpoolCancel() { + let task = new taskpool.Task(inspectStatus, 100); + taskpool.execute(task).then((res)=>{ + console.log("taskpool test result: " + res); + }).catch((err) => { + console.log("taskpool test occur error: " + err); + }); + setTimeout(()=>{ + try { + taskpool.cancel(task); // 任务已执行,取消失败 + } catch (e) { + console.log("taskpool.cancel occur error:" + e); + } + }, 3000); // 延时3s,确保任务已执行 +} + +taskpoolCancel(); ``` \ No newline at end of file diff --git a/zh-cn/application-dev/reference/apis/js-apis-worker.md b/zh-cn/application-dev/reference/apis/js-apis-worker.md index bc9fdee8551c7a500f1214b8a45b106d22ee08db..4738fe5e254cb52d927d9c6a9390cd8a15e51ae3 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-worker.md +++ b/zh-cn/application-dev/reference/apis/js-apis-worker.md @@ -180,7 +180,7 @@ postMessage(message: Object, transfer: ArrayBuffer[]): void; | 错误码ID | 错误信息 | | -------- | ----------------------------------------- | | 10200004 | Worker instance is not running. | -| 10200006 | Serializing an uncaught exception failed. | +| 10200006 | An exception occurred during serialization. | **示例:** @@ -213,7 +213,7 @@ postMessage(message: Object, options?: PostMessageOptions): void | 错误码ID | 错误信息 | | -------- | ----------------------------------------- | | 10200004 | Worker instance is not running. | -| 10200006 | Serializing an uncaught exception failed. | +| 10200006 | An exception occurred during serialization. | **示例:** @@ -866,7 +866,7 @@ Worker线程向宿主线程发送消息。 | 错误码ID | 错误信息 | | -------- | ----------------------------------------- | | 10200004 | Worker instance is not running. | -| 10200006 | Serializing an uncaught exception failed. | +| 10200006 | An exception occurred during serialization. | **示例:** @@ -914,7 +914,7 @@ Worker线程向宿主线程发送消息。 | 错误码ID | 错误信息 | | -------- | ----------------------------------------- | | 10200004 | Worker instance is not running. | -| 10200006 | Serializing an uncaught exception failed. | +| 10200006 | An exception occurred during serialization. | **示例:** diff --git a/zh-cn/application-dev/reference/errorcodes/errorcode-utils.md b/zh-cn/application-dev/reference/errorcodes/errorcode-utils.md index a672b1cfb0dadc5470fc9f990e542e64b616a93f..611a3f57e605cbfb26a2fa397a4b7a83619a9eaa 100644 --- a/zh-cn/application-dev/reference/errorcodes/errorcode-utils.md +++ b/zh-cn/application-dev/reference/errorcodes/errorcode-utils.md @@ -100,7 +100,7 @@ Worker不支持某API。 **错误信息** -Serializing an uncaught exception failed. +An exception occurred during serialization. **错误描述** @@ -246,7 +246,7 @@ Function未被标记为concurrent。 **错误信息** -The task is not exist when cancel it. +The task does not exist when it is canceled. **错误描述** @@ -264,7 +264,7 @@ The task is not exist when cancel it. **错误信息** -The task is running when cancel it. +The task is executing when it is canceled. **错误描述**