如何实现TaskPool异步任务支持串行队列

如何实现TaskPool异步任务支持串行队列。

HarmonyOS
2024-09-18 12:24:03
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Heiang

从API 11开始 taskpool 提供了 SequenceRunner 接口用于执行一组需要串行执行的任务,参考文档:SequenceRunner

参考代码:

import { taskpool } from '@kit.ArkTS'; 
 
@Concurrent 
function additionDelay(delay: number): void { 
  let start: number = new Date().getTime(); 
  while (new Date().getTime() - start < delay) { 
    continue; 
  } 
} 
 
@Concurrent 
function waitForRunner(finalString: string): string { 
  return finalString; 
} 
 
async function seqRunner() { 
  let finalString: string = ""; 
  let task1: taskpool.Task = new taskpool.Task(additionDelay, 3000); 
  let task2: taskpool.Task = new taskpool.Task(additionDelay, 2000); 
  let task3: taskpool.Task = new taskpool.Task(additionDelay, 1000); 
  let task4: taskpool.Task = new taskpool.Task(waitForRunner, finalString); 
 
  let runner: taskpool.SequenceRunner = new taskpool.SequenceRunner(); 
  runner.execute(task1).then(() => { 
    finalString += 'a'; 
    console.info("seqrunner: task1 done."); 
  }); 
  runner.execute(task2).then(() => { 
    finalString += 'b'; 
    console.info("seqrunner: task2 done"); 
  }); 
  runner.execute(task3).then(() => { 
    finalString += 'c'; 
    console.info("seqrunner: task3 done"); 
  }); 
  await runner.execute(task4); 
  console.info("seqrunner: task4 done, finalString is " + finalString); 
}
分享
微博
QQ
微信
回复
2024-09-18 17:17:13
相关问题
taskpool异步任务支持串行处理的方法
1048浏览 • 1回复 待解决
HarmonyOS 怎么实现任务串行顺序执行
371浏览 • 1回复 待解决
如何利用taskpool执行多任务
2054浏览 • 1回复 待解决
HarmonyOS @ohos.taskpool(启动任务池)
228浏览 • 1回复 待解决
使用Promise实现一种串行调用方式
1060浏览 • 1回复 待解决
TaskPool和Worker中任务调度机制
1930浏览 • 1回复 待解决