1、初始化taskpool.SequenceRunner对象;
2、向taskpool.SequenceRunner对象提交任务;
3、使用taskpool.cancel取消还未开始执行的任务;
4、闪退提示:
The task to cancel does not exist, taskpool:: task is not executed or has been executed
测试代码:
test() {
console.log(`item test9`)
let task1: taskpool.Task = new taskpool.Task(ThreadPool.additionDelay, 5000);
let task2: taskpool.Task = new taskpool.Task(ThreadPool.additionDelay, 2000);
let task3: taskpool.Task = new taskpool.Task(ThreadPool.additionDelay, 4000);
let runner: taskpool.SequenceRunner = new taskpool.SequenceRunner();
task1.onStartExecution(() => {
console.log(`task1 start`)
})
task2.onStartExecution(() => {
console.log(`task2 start`)
})
task3.onStartExecution(() => {
console.log(`task3 start`)
})
runner.execute(task1).then(() => {
console.log(`task1 done`)
})
runner.execute(task2).then(() => {
console.log(`task2 done`)
})
runner.execute(task3).then(() => {
console.log(`task3 done`)
})
setTimeout(() => {
console.log(`task2 cancel`)
taskpool.cancel(task2)
}, 2000)
console.log(`test9 done`)
}
@Concurrent
export async function additionDelay(delay: number) {
let start: number = new Date().getTime();
while (new Date().getTime() - start < delay) {
continue;
}
}
将待执行的函数放入taskpool内部任务队列,函数不会立即执行而是等待分发到工作线程执行。当前执行模式不可取消任务。
参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-taskpool-V5\#iscanceled10
取消任务参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-taskpool-V5\#taskpoolcancel