]> git.lizzy.rs Git - lua_async.git/blob - util.lua
7061c0619f379e189766f782ec57a1c9f63ab1eb
[lua_async.git] / util.lua
1 function lua_async.yield()
2         await(Promise(function(resolve)
3                 setImmediate(resolve)
4         end))
5 end
6
7 function lua_async.sleep(ms)
8         await(Promise(function(resolve)
9                 setTimeout(resolve, ms)
10         end))
11 end
12
13 function lua_async.kill_thread()
14         coroutine.yield(true)
15 end
16
17 function lua_async.resume(co)
18         local status, err = coroutine.resume(co)
19
20         if coroutine.status(co) == "dead" or err then
21                 lua_async.limiting.unset_limit(co)
22         end
23
24         if not status then
25                 error("Error (in async function): " .. err)
26         end
27 end
28
29 function lua_async.run()
30         local last_time = os.clock()
31
32         while true do
33                 local current_time = os.clock()
34                 local dtime = current_time - last_time
35                 last_time = current_time
36
37                 lua_async.step(dtime)
38         end
39 end