From a8361f73c9ab3c4729872ce6ac99bfa4e97cba90 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Fri, 6 Aug 2021 22:01:53 +0200 Subject: [PATCH] Move resume() to util.lua --- async_await.lua | 33 +++++++++------------------------ util.lua | 20 ++++++++++++++++---- 2 files changed, 25 insertions(+), 28 deletions(-) diff --git a/async_await.lua b/async_await.lua index 97d4f7d..6965688 100644 --- a/async_await.lua +++ b/async_await.lua @@ -1,14 +1,15 @@ -lua_async.async_await = {} +function async(func) + return function(...) + local promise = Promise() + promise.__on_resolve = func -function lua_async.resume(co) - local status, err = coroutine.resume(co) + local args = {...} - if coroutine.status(co) == "dead" or err then - lua_async.limiting.unset_limit(co) - end + lua_async.resume(coroutine.create(function() + promise:resolve(unpack(args)) + end)) - if not status then - error("Error (in async function): " .. err) + return promise end end @@ -25,19 +26,3 @@ function await(promise) return unpack(promise.values) end - -function async(func) - return function(...) - local promise = Promise() - promise.__on_resolve = func - - local args = {...} - - lua_async.resume(coroutine.create(function() - promise:resolve(unpack(args)) - end)) - - return promise - end -end - diff --git a/util.lua b/util.lua index e7c6cbf..7061c06 100644 --- a/util.lua +++ b/util.lua @@ -4,16 +4,28 @@ function lua_async.yield() end)) end -function lua_async.kill_thread() - coroutine.yield(true) -end - function lua_async.sleep(ms) await(Promise(function(resolve) setTimeout(resolve, ms) end)) end +function lua_async.kill_thread() + coroutine.yield(true) +end + +function lua_async.resume(co) + local status, err = coroutine.resume(co) + + if coroutine.status(co) == "dead" or err then + lua_async.limiting.unset_limit(co) + end + + if not status then + error("Error (in async function): " .. err) + end +end + function lua_async.run() local last_time = os.clock() -- 2.44.0