我正在使用带有 Adafruit HUZZAH ESP8266 的 NodeMCU 0.9.6。
以下代码在http.get
语句中定义了回调函数,它可以工作:
http.get("http://192.168.2.38/ICmd.py?i=esp8266001", nil, function(code, data)
if (code < 0) then
print("***ICmd HTTP request failed")
else
print("***ICmd callback: ", code, data)
end
end)
以下代码将回调函数定义从http.get
语句中移动为独立函数:
function chkICmdResp(code, data)
if (code < 0) then
print("***ICmd HTTP request failed")
else
print("***ICmd callback: ", code, data)
end
end
http.get("http://192.168.2.38/ICmd.py?i=esp8266001", nil, chkICmdResp(code, data) )
第二种格式不起作用,它会产生错误:
stdin:2: attempt to compare nil with number
stack traceback:
stdin:2: in function 'chkICmdResponse'
stdin:1: in main chunk
我做错了什么(NodeMCU noobie)?或者这是一个设计特性还是一个错误?
如果能够拥有一个可以从多个 http.get 调用中引用的回调函数,那就太好了。
注意:我也尝试过这个net.socket:on("receive",...)
模块,并在尝试使用在调用语句之外定义的函数时得到相同的错误结果。