functioncalcLogic() local key_table = {} for k, _ inpairs(remoteData.assets) do table.insert(key_table, k) end local index = 1-- 当前索引 local total = #key_table -- 总数量 local batchSize = 1000-- 每帧处理数量,可按设备性能调整
-- 检验结束回调 localfunctioncheckFinished() self._processFunc(100, "检查更新...(100%)") end
-- 检测一条 localfunctioncheckOne(index) -- 计算逻辑;正式环境避免逐条打印日志 end
-- update localfunctionupdateHandler() for i = 1, batchSize do if index <= total then checkOne(index) index = index + 1 else -- 循环终止 ifself._checkTimer then cc.Director:getInstance():getScheduler():unscheduleScriptEntry(self._checkTimer) end self._checkTimer = nil checkFinished() return end end -- 刷新进度条 local finished = math.min(index - 1, total) local num = total > 0andmath.floor(finished * 100 / total) or100 self._processFunc(num, "资源重新校验中...(" .. num .. "%)") end
-- 分帧检验开启 ifself._checkTimer == nilthen self._checkTimer = cc.Director:getInstance():getScheduler():scheduleScriptFunc(updateHandler, 0, false) end end