

前言
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.execute 提交任务到后台线程,保持 UI 流畅。核心要点:@Concurrent 标记函数、 execute(fn, …args) 提交、 优先级控制执行顺序。
如果这篇文章对你有帮助,欢迎点赞👍、收藏⭐、关注🔔,你的支持是我持续创作的动力!
相关资源:
- taskpool 文档
- 第 144 篇:taskpool
- 第 146 篇:sendable
- 第 148 篇:task-group
网硕互联帮助中心








评论前必须登录!
注册