Lua计时器 - 创建一个计时器以每 X 秒执行一个函数

遵循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()

当我执行我的脚本时,我会得到一个语法错误:

'=' 期望在 'mytimer' 附近

我在这里做错了什么?

谢谢

原文链接 https://stackoverflow.com/questions/69573780

点赞
stackoverflow用户2858170
stackoverflow用户2858170

好的,与其在这里询问,一个好的起点是比较你的代码和你链接的文档中的代码示例:

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'是什么。除非你正在现场定义一个函数,否则这里不应该有结尾。那样它的形式应该像例子一样。你的版本只有在'my_function()'返回一个函数值时才能正常运行,如果没有'end',则只会好。

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

您还可以这样做:

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

其他内容在手册中已有描述。

2021-10-14 16:09:52