这样的话就不是异步咯
已经是同步了
使用lua里的coroutine来执行
local co = coroutine.create(function ()
print(1234)
coroutine.yield()
print(2345)
end)
print(111)
coroutine.resume(co)
print(222)
coroutine.resume(co)
print(333)
看一下输出结果就会懂了
在运行到yield的时候 就是你所谓的跳出
当需要再跳回去的时候重新执行一下
coroutine.resume(co)
由于Lua是单线程的, 因此Lua本身根本就没有异步这一说.
所以异步完成的功能需要右外部提供.
现在, 我们假定有一个外部提供的fx函数, 用于完成异步处理, 并且在处理完成后会调用f2来通知Lua.
那么在异步处理期间, Lua就必须等待,或者去处理其他内容.
loacl flag = false; -- 是否完成了异步处理
function f2()
flag = true;
end
f1大致如此:
fx(f2); -- fx完成时候调用f2
while not flag do
-- 一直等待直到异完成
-- 做一些事情
-- 如果f1是一个协程, 可以用yeild放弃执行
end
-- 异步完成后的事情
你看清楚这是什么吧