HarmonyOS 任务延时问题

在Component中,aboutToAppear方法中开启任务,每隔120秒执行一次,调用接口上传数据,上传失败还有页面组件的处理。task有点不满足,@Concurrent修饰的fuction必须是Component才可以定义,无法交互。有什么更好的替代方案。

HarmonyOS
19h前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zxjiu

可参考DEMO:

import taskpool from '@ohos.taskpool';
import { hilog } from '@kit.PerformanceAnalysisKit';
let g_callback: Function | null = null;
export function RegistTimerCallBack(callback: Function) {
  g_callback = callback;
}
@Concurrent
function ServiceHandle(pars: number): number {
  hilog.info(0x0000, '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, 'Timer handle count :%{public}d,pars %{public}d', count, pars);
  taskpool.execute(task, taskpool.Priority.HIGH).then((res: object) => {
    hilog.info(0x0000, 'ServiceHandle result :%{public}d', res);
    if (g_callback != null) {
      g_callback(count);
    }
  });
}
let timerId = -1;
export function TimerTest() {
  count = 0;
  let value = 88;
  timerId = setInterval(TimerOutHandle, 120000, value);
}
@Entry
@Component
struct Index {
  @State message: string = 'Hello World'
  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
          .onClick(() => {
            TimerTest();
          })
      }
      .width('100%')
    }
    .height('100%')
  }
}
分享
微博
QQ
微信
回复
17h前
相关问题
HarmonyOS 延时任务
1浏览 • 0回复 待解决
线程执行延时如何实现
1644浏览 • 1回复 待解决
如何在Promise里实现延时等待?
0浏览 • 0回复 待解决
HarmonyOS 怎样获取系统的音频延时
386浏览 • 1回复 待解决
HarmonyOS 定时轮询任务开发
37浏览 • 1回复 待解决
HarmonyOS 后台任务保持
319浏览 • 1回复 待解决