云计算百科
云计算领域专业知识百科平台

HarmonyOS应用开发实战:猫猫大作战-taskpool-execute 任务提交

文章配图:taskpool-execute 任务提交

页面预览

前言

taskpool.execute 将任务函数提交到后台线程池执行。在「猫猫大作战」中,通过 taskpool.execute 提交耗时计算和文件 I/O 操作,避免阻塞 UI 线程。

一、execute 基础

import { taskpool } from '@kit.ArkTS';

@Concurrent
function computeScore(cats: Cat[]): number {
let score = 0;
for (const cat of cats) {
score += CatConfig[cat.level].score;
}
return score;
}

async function calculateScoreAsync(cats: Cat[]): Promise<number> {
const result = await taskpool.execute(computeScore, cats);
return result;
}

二、多参数任务

@Concurrent
function saveGameData(score: number, time: number, player: string): boolean {
// 后台保存
console.info(`保存游戏: ${player}, ${score}分, ${time}`);
return true;
}

// 提交多参数
await taskpool.execute(saveGameData, this.score, this.gameTime, this.playerName);

三、优先级

// 高优先级任务(如保存数据)
taskpool.execute(saveGameData, score, time, player, taskpool.Priority.HIGH);

// 低优先级任务(如数据统计)
taskpool.execute(computeStats, data, taskpool.Priority.LOW);

优先级常量适用场景
HIGH Priority.HIGH 用户主动触发
MEDIUM Priority.MEDIUM 一般后台任务
LOW Priority.LOW 非关键统计

四、执行限制

限制说明
函数必须 @Concurrent 编译检查
参数可序列化 基本类型、Array、对象
无闭包引用 不能引用外部变量
单次执行 < 3 分钟 超时自动终止

五、最佳实践

  • 耗时操作用 taskpool:文件 I/O、大量计算
  • UI 操作不要放在 taskpool:不能在后台线程更新 UI
  • 设置合理优先级:用户主动操作用 HIGH
  • 错误处理:taskpool 内 try-catch
  • 总结

    taskpool.execute 提交任务到后台线程,保持 UI 流畅。核心要点:@Concurrent 标记函数、 execute(fn, …args) 提交、 优先级控制执行顺序。

    如果这篇文章对你有帮助,欢迎点赞👍、收藏⭐、关注🔔,你的支持是我持续创作的动力!


    相关资源:

    • taskpool 文档
    • 第 144 篇:taskpool
    • 第 146 篇:sendable
    • 第 148 篇:task-group
    赞(0)
    未经允许不得转载:网硕互联帮助中心 » HarmonyOS应用开发实战:猫猫大作战-taskpool-execute 任务提交
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!