refactor parallel code
This commit is contained in:
35
milo/apis/taskRunner.lua
Normal file
35
milo/apis/taskRunner.lua
Normal file
@@ -0,0 +1,35 @@
|
||||
local class = require('class')
|
||||
|
||||
local parallel = _G.parallel
|
||||
|
||||
local TaskRunner = class()
|
||||
|
||||
function TaskRunner:init(args)
|
||||
self.tasks = { }
|
||||
self.errorMsg = 'Task failed: '
|
||||
|
||||
for k,v in pairs(args or { }) do
|
||||
self[k] = v
|
||||
end
|
||||
end
|
||||
|
||||
function TaskRunner:add(fn)
|
||||
table.insert(self.tasks, function()
|
||||
local s, m = pcall(fn)
|
||||
if not s and m then
|
||||
self:onError(m)
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
function TaskRunner:run()
|
||||
if #self.tasks > 0 then
|
||||
parallel.waitForAll(table.unpack(self.tasks))
|
||||
end
|
||||
end
|
||||
|
||||
function TaskRunner:onError(msg)
|
||||
_G._debug(msg.errorMsg .. msg)
|
||||
end
|
||||
|
||||
return TaskRunner
|
||||
Reference in New Issue
Block a user