]> git.lizzy.rs Git - lua_async.git/commitdiff
Implement yield() using a promise and setImmediate
authorElias Fleckenstein <eliasfleckenstein@web.de>
Fri, 6 Aug 2021 19:19:35 +0000 (21:19 +0200)
committerElias Fleckenstein <eliasfleckenstein@web.de>
Fri, 6 Aug 2021 19:19:35 +0000 (21:19 +0200)
util.lua

index 852b933e85d4760ebf04f04eff1eb4d66b0b39af..e7c6cbf2b216dfdb350258dddeb5cb3dab4b8152 100644 (file)
--- a/util.lua
+++ b/util.lua
@@ -1,9 +1,7 @@
 function lua_async.yield()
-       local co = assert(coroutine.running(), "yield called outside of an async function")
-
-       setTimeout(lua_async.resume, 0, co)
-
-       coroutine.yield()
+       await(Promise(function(resolve)
+               setImmediate(resolve)
+       end))
 end
 
 function lua_async.kill_thread()