
前言taskpool是 HarmonyOS 的任務池并發能力將任務提交到后臺線程執行不阻塞 UI 線程。在「貓貓大作戰」中taskpool 用于后臺保存游戲數據、加密戰績、以及大量數據的排序處理。一、taskpool 基礎import{taskpool}fromkit.ArkTS;// 定義任務函數必須使用 Concurrent 裝飾ConcurrentfunctionsaveScoreToFile(score:number,path:string):boolean{// 在后臺線程執行文件寫入try{// ... 文件寫入邏輯returntrue;}catch{returnfalse;}}// 提交任務asyncfunctionsaveScoreAsync(score:number):Promisevoid{constpath${getContext().filesDir}/score.txt;constresultawaittaskpool.execute(saveScoreToFile,score,path);console.info(保存結果:${result});}二、多任務并行ConcurrentfunctionprocessMerge(cats:Cat[]):MergeResult{// 后臺執行合并檢測returndetectMerges(cats);}ConcurrentfunctionupdateScore(score:number):number{returnscore*2;// 模擬復雜計算}// 并行執行多個任務asyncfunctionparallelTasks(){const[mergeResult,newScore]awaitPromise.all([taskpool.execute(processMerge,this.cats),taskpool.execute(updateScore,this.score),]);console.info(合并結果:${mergeResult}, 得分:${newScore});}三、taskpool vs Worker特性taskpoolWorker創建方式動態提交預創建資源管理自動管理手動管理數據傳遞結構化克隆結構化克隆適用場景頻繁小任務長耗時大任務復雜度低高四、游戲中的應用// 游戲結束時異步保存endGame(){// 1. 先切換 UIthis.gameStateGameState.GAME_OVER;// 2. 后臺保存taskpool.execute(saveGameData,{score:this.score,cats:this.gameEngine.getAllCats(),timestamp:Date.now(),});// 3. 同時異步加密taskpool.execute(encryptScore,this.score);}五、限制說明任務函數必須Concurrent裝飾參數必須是結構化克隆兼容類型不能傳函數、Class 實例不可訪問 UI 線程的變量如getContext()避免長時間任務單任務建議 3 秒總結taskpool 提供簡單高效的后臺并發能力適合游戲中的異步數據保存和計算。核心要點Concurrent標記任務函數、taskpool.execute提交執行、 多任務Promise.all并行、 不阻塞 UI 線程。如果這篇文章對你有幫助歡迎點贊、收藏?、關注你的支持是我持續創作的動力相關資源taskpool 官方文檔Concurrent 裝飾器第 143 篇JSON第 145 篇Worker