1 local unpack = unpack or table.unpack
2 lua_async.intervals = {
8 function setInterval(callback, ms, ...)
9 local id = lua_async.intervals.last_id + 1
10 lua_async.intervals.last_id = id
11 local step_time = (ms or 0) / 1000
12 lua_async.intervals.pool[id] = {
13 time_left = step_time,
14 step_time = step_time,
21 function clearInterval(id)
22 lua_async.intervals.pool[id] = nil
23 lua_async.intervals.executing[id] = nil
26 function lua_async.intervals.step(dtime)
27 lua_async.intervals.executing = {}
29 for k, v in pairs(lua_async.intervals.pool) do
30 lua_async.intervals.executing[k] = v
33 for id, interval in pairs(lua_async.intervals.executing) do
34 interval.time_left = interval.time_left - dtime
36 if interval.time_left <= 0 then
37 interval.callback(unpack(interval.args))
38 interval.time_left = interval.step_time