• 欢迎大家分享资料!前往留言板评论即可!

sys.waitUntil与sys.waitUntilExt的区别

合宙 模组资料网 2年前 (2021-05-15) 310次浏览 0个评论 扫描二维码

基础用法都是相似的,用于协程的阻塞等待:

sys.taskInit(function()
    while true do
        sys.waitUntil("MSG")
    end
end)

不同点在于函数返回值不同:
sys.waitUntil 返回 true(收到消息)/false(超时)和Data(如果有);
sys.waitUntilExt返回 MSG(消息的str)/ false(超时)和Data(如果有);

--发布消息
sys.taskInit(function()
    while true do
        sys.wait(2000)
        sys.publish("MSG_TEST", "test_payload")
        log.info("msg_test", "send")
    end
end)

--订阅消息
--sys.subscribe("MSG", function(callback) log.info("msg",callback ) end)

--测试waitUntil
sys.taskInit(function()
    while true do
        local result, data = sys.waitUntil("MSG_TEST")
        log.info("msg.waitUntil", result, data)
    end
end)
--测试waitUntil timeout
sys.taskInit(function()
    while true do
        local result, data = sys.waitUntil("MSG_TEST", 1500)
        log.info("msg.waitUntil.timeout", result, data)
    end
end)


--测试waitUntilExt
sys.taskInit(function()
    while true do
        local msg, data = sys.waitUntilExt("MSG_TEST")
        log.info("msg.waitUntilExt", msg, data)
    end
end)
--测试waitUntilExt timeout
sys.taskInit(function()
    while true do
        local msg, data = sys.waitUntilExt("MSG_TEST", 1500)
        log.info("msg.waitUntilExt.timeout", msg, data)
    end
end)

输出结果如下:

[2020-03-13 09:38:54.648]: [I]-[msg_test] send
[2020-03-13 09:38:55.155]: [I]-[msg.waitUntil.timeout] false nil
[2020-03-13 09:38:55.157]: [I]-[msg.waitUntilExt.timeout] false nil
[2020-03-13 09:38:56.656]: [I]-[msg.waitUntilExt] MSG_TEST test_payload
[2020-03-13 09:38:56.658]: [I]-[msg.waitUntil] true test_payload

转载请注明原文链接:sys.waitUntil与sys.waitUntilExt的区别
喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址