【小技巧】如何收到订阅消息(sys.subscribe)后执行任务函数(sys.taskInit)?

众所周知,luatask使用的协程机制,所以sys.taskInit支持sys.wait。
但是sys.subscribe并不能使用sys.wait,可是很多情况下需要结合使用,那么就要有变通的法子。
在此介绍个解决方案:

1
2
3
4
5
6
7
8
9
--使用sys.taskInit“初始化”,sys.waitUntil阻塞,直到收到消息,代码再继续执行
sys.taskInit(function()
sys.waitUntil("TEST")
print("fst test")
sys.wait(1000)
print("sec test")
end)

sys.timerStart(sys.publish, 5000, "TEST")

实际上,它等同于

1
2
3
4
5
6
7
8
9
10
11
local function functionA()
sys.waitUntil("TEST")
print("fst test")
sys.wait(1000)
print("fst test")
end

sys.taskInit(functionA)

sys.timerStart(sys.publish, 5000, "TEST")

上次更新 2021-01-28