【问题标题】:Lua timer - creating a timer to execute a function every X secondsLua timer - 创建一个计时器以每 X 秒执行一次函数
【发布时间】:2021-12-03 00:18:06
【问题描述】:

按照https://nodemcu.readthedocs.io/en/release/modules/tmr/#tobjcreate上的说明进行操作

我正在尝试在我的 Lua 脚本中创建一个计时器,该计时器将每 10 秒执行一次函数。我的脚本中的示例计时器:

mytimer = tmr.create
mytimer:register(10000, tmr.ALARM_AUTO, my_function() end)
mytimer:start()

执行脚本时出现语法错误:

'=' expected near 'mytimer'

我在这里做错了什么?

谢谢

【问题讨论】:

  • 我收到')' expected near 'end'

标签: lua timer nodemcu


【解决方案1】:

好吧,与其在这里提问,不如将您的代码与您链接的文档中的代码示例进行比较:

local mytimer = tmr.create()
mytimer:register(5000, tmr.ALARM_SINGLE, function (t) print("expired"); t:unregister() end)
mytimer:start()

示例:local mytimer = tmr.create()

mytimer = tmr.create

您在这里缺少呼叫接线员。不将 mytimer 设为本地是不好的做法,但不会给您错误。

示例:mytimer:register(5000, tmr.ALARM_SINGLE, function (t) print("expired"); t:unregister() end)

你:mytimer:register(10000, tmr.ALARM_AUTO, my_function() end)

我不知道my_function 是什么。除非您在适当的位置定义函数,否则结尾不属于这里。那么它应该看起来像示例中的样子。如果没有end 并且my_function() 将返回一个函数值,您的版本就可以了。

function (t) print("expired"); t:unregister() end 定义了一个匿名函数。这将解析为一个函数值,该函数值用作注册函数的回调参数的参数。

你也可以这样做:

local callback = function (t) print("expired"); t:unregister() end
mytimer:register(5000, tmr.ALARM_SINGLE, callback)

手册中描述了其他任何内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-04
    • 1970-01-01
    • 2019-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多