成功回调函数在失败时被调用。可能是一个bug吗?

我正在做一个小项目,使用ESP8266与NodeMCU和Lua。我怀疑我发现了一个bug,但由于我对Lua(和其他两个)都很陌生,我希望得到一些帮助,确认是否正确,或者我是否遗漏了些什么(更可能是!)。

NodeMCU固件包含一个内置的SNTP客户端模块,用于更新同步时间到系统时钟(rtctime模块)。成功的回调函数似乎会在(或可能在)NTP同步失败时被调用。例如,如果wifi未连接,或者在启动后第一次同步尝试(连通wifi)时发生。根据文档,rtctime.get()返回零如果当前时间不可用;这是我得到的结果,进一步显示NTP同步不成功。我无法弄清楚为什么在此时调用成功函数,在失败函数之前或之代替(我原本会期望)。

我正在参考的sntp模块在这里——不幸的是,C源代码有点超出了我的能力范围:https://nodemcu.readthedocs.io/en/master/en/modules/sntp/

我的(最小)代码:

-为ntp同步成功定义回调函数
function ntpSyncSuccess (sec, usec, server, info)
    print('SNTP时间同步成功!')
    print'rtctime.get()返回:',rtctime.get())
end

-配置并启动带有自动重复功能的NTP时间同步
sntp.sync(“0.au.pool.ntp.org”,
    ntpSyncSuccess(sec,usec,server,info),-成功回调
    function()    - 错误回调
        print('SNTP时间同步失败!')
    end,
    1-启用自动重复(SNTP同步每1000秒(〜17分钟))
)

当我启动设备并运行代码时的串行输出结果(注意倒数第二和第三行):

NodeMCU custom build by frightanic.com
    branch: master
    commit: 11592951b90707cdcb6d751876170bf4da82850d
    SSL: false
    modules: cron,file,gpio,i2c,net,node,rotary,rtctime,sntp,struct,tmr,uart,wifi
 build created on 2019-01-16 03:11
 powered by Lua 5.1.4 on SDK 2.2.1(6ab97e9)
lua: cannot open init.lua
> print(uart.setup(0, 115200, 8, 0, 1, 1 ))
115200
> dofile('ntpTest.lua')
SNTP时间同步成功!
rtctime.get()返回:0 0 0
> SNTP时间同步失败!
点赞
用户131929
用户131929

为了让我们可以在这里“结束”这个问题(一旦你接受了答案)。它必须是一个函数引用而非函数调用。

sntp.sync("0.au.pool.ntp.org",
    ntpSyncSuccess,     -- 没有(),没有参数
    function()          -- 错误回调
2019-01-22 21:58:17