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 89d050ecfc85ab531f3e7e3b4b04dd8cc9de4248..ba7765cdd8d3fd902fea12010a33db97875e7b23 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-taskpool.md +++ b/zh-cn/application-dev/reference/apis/js-apis-taskpool.md @@ -46,7 +46,7 @@ Task的构造函数。 | 参数名 | 类型 | 必填 | 说明 | | ------ | --------- | ---- | -------------------------------------------------------------------- | | func | Function | 是 | 任务执行需要传入函数,支持的函数返回值类型请查[序列化支持类型](#序列化支持类型)。 | -| args | unknown[] | 否 | 任务执行传入函数的参数,支持的参数类型请查[序列化支持类型](#序列化支持类型)。 | +| args | unknown[] | 否 | 任务执行传入函数的参数,支持的参数类型请查[序列化支持类型](#序列化支持类型)。默认值为undefined。 | **错误码:** @@ -81,7 +81,7 @@ let task = new taskpool.Task(func, "this is my first Task"); execute(func: Function, ...args: unknown[]): Promise\ -任务池执行任务,需要传入待执行的函数和函数所需的参数,此执行模式不可取消任务。 +将待执行的函数放入taskpool内部任务队列等待,等待分发到工作线程执行。当前执行模式不可取消任务。 **系统能力:** SystemCapability.Utils.Lang @@ -90,7 +90,7 @@ execute(func: Function, ...args: unknown[]): Promise\ | 参数名 | 类型 | 必填 | 说明 | | ------ | --------- | ---- | ---------------------------------------------------------------------- | | func | Function | 是 | 执行的逻辑需要传入函数,支持的函数返回值类型请查[序列化支持类型](#序列化支持类型)。 | -| args | unknown[] | 否 | 执行逻辑的函数所需要的参数,支持的参数类型请查[序列化支持类型](#序列化支持类型)。 | +| args | unknown[] | 否 | 执行逻辑的函数所需要的参数,支持的参数类型请查[序列化支持类型](#序列化支持类型)。默认值为undefined。 | **返回值:** @@ -129,7 +129,7 @@ taskpoolTest(); execute(task: Task, priority?: Priority): Promise\ -任务池执行任务,需要传入已创建的任务,此执行模式可取消任务。 +将创建好的任务放入taskpool内部任务队列等待,等待分发到工作线程执行。当前执行模式可尝试调用cancel进行任务取消。 **系统能力:** SystemCapability.Utils.Lang @@ -197,18 +197,18 @@ cancel(task: Task): void | 10200015 | If the task is not exist. | | 10200016 | If the task is running. | -**示例:** +**任务取消成功示例:** ```ts -@Concurrent function func(args) { + "use concurrent"; console.log("func: " + args); return args; } async function taskpoolTest() { let task = new taskpool.Task(func, 100); - let value = await taskpool.execute(task); + taskpool.execute(task); try { taskpool.cancel(task); } catch (e) { @@ -219,6 +219,66 @@ async function taskpoolTest() { taskpoolTest(); ``` +**已执行的任务取消失败示例:** + +```ts +function func(args) { + "use concurrent"; + console.log("func: " + args); + return args; +} + +async function taskpoolTest() { + let task = new taskpool.Task(func, 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); + } +} + +taskpoolTest(); +``` + +**正在执行的任务取消失败示例:** + +```ts +function func(args) { + "use concurrent"; + console.log("func: " + args); + return args; +} + +async function taskpoolTest() { + let task1 = new taskpool.Task(func, 100); + let task2 = new taskpool.Task(func, 200); + let task3 = new taskpool.Task(func, 300); + let task4 = new taskpool.Task(func, 400); + let task5 = new taskpool.Task(func, 500); + let task6 = new taskpool.Task(func, 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); + } +} + +taskpoolTest(); +``` + ## 其他说明 ### 序列化支持类型