123456789101112131415161718192021222324252627 |
- --[[ A coroutine Helper T. Ellison, June 2019
- This version of couroutine helper demonstrates the use of corouting within
- NodeMCU execution to split structured Lua code into smaller tasks
- ]]
- --luacheck: read globals node
- local modname = ...
- local function taskYieldFactory(co)
- local post = node.task.post
- return function(nCBs) -- upval: co,post
- post(function () -- upval: co, nCBs
- coroutine.resume(co, nCBs or 0)
- end)
- return coroutine.yield() + 1
- end
- end
- return { exec = function(func, ...) -- upval: modname
- package.loaded[modname] = nil
- local co = coroutine.create(func)
- return coroutine.resume(co, taskYieldFactory(co), ... )
- end }
|