#鸿蒙通关秘籍#如何在HarmonyOS NEXT中延迟任务的执行?

HarmonyOS
7天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
DL风轨迹

在HarmonyOS NEXT中,有两种方法用来实现任务的延迟执行:使用setTimeouttaskpool.executeDelayed。以下分别为这两种方案的示例:

  1. 使用setTimeout进行延迟处理:
@Concurrent

function ServiceHandle(pars: number): number {
  hilog.info(0x0000, 'testTag', 'start ServiceHandle:%{public}d', pars);
  let result = 0;
  return result;
}

let count = 0;

function TimerOutHandle(pars:number) {
  count++;
  let task: taskpool.Task = new taskpool.Task(ServiceHandle, pars);
  hilog.info(0x0000, 'testTag', 'Timer handle count :%{public}d,pars %{public}d', count, pars);
  taskpool.execute(task, taskpool.Priority.HIGH).then((res: object) => {
    hilog.info(0x0000, 'testTag', 'ServiceHandle result :%{public}d', res);
    if (g_callback != null) {
      g_callback(count);
    }
  });
}

export function OneTimerCallTest() {
  count = 0;
  if (g_callback != null) {
    g_callback(count);
  }
  let value = 99;
  hilog.info(0x0000, 'testTag', 'start setTimeout');
  setTimeout(TimerOutHandle, 3000, value);
}
  1. 使用executeDelayed进行延迟处理:
@Concurrent

function TaskDelayServiceHandle(pars: number): number {
  let t: number = Date.now();
  hilog.info(0x0000, 'testTag', 'enter TaskDelayServiceHandle, timer is :%{public}d', t);
  let result = 0;
  return result;
}

export function TaskPoolDelayTest() {
  count = 0;
  if (g_callback != null) {
    g_callback(count);
  }
  let value = 100;
  let t: number = Date.now();
  hilog.info(0x0000, 'testTag', 'taskpool start time is :%{public}d', t);
  let task: taskpool.Task = new taskpool.Task(TaskDelayServiceHandle, value);
  taskpool.executeDelayed(3000, task).then(() => {
    count++;
    let t: number = Date.now();
    hilog.info(0x0000, 'testTag', 'taskpool execute success, time is :%{public}d', t);
    if (g_callback != null) {
      g_callback(count);
    }
  }).catch((e: BusinessError) => {
    console.error(`taskpool execute: Code: ${e.code}, message: ${e.message}`);
  })
}

通过上述代码,可以实现延迟任务的执行,setTimeout用于简单的单次延迟,而executeDelayed可以与任务池结合,用于更复杂的任务控制。


分享
微博
QQ
微信
回复
6天前
相关问题
延迟任务什么时候会执行
1660浏览 • 1回复 待解决
延迟任务执行时机及运行线程
2070浏览 • 1回复 待解决
如何在构建任务执行shell脚本
362浏览 • 1回复 待解决
HarmonyOS 代码延迟时间执行方法
441浏览 • 1回复 待解决
如何确认延迟任务是否申请成功
1953浏览 • 1回复 待解决