在这段代码中,在函数foo()和end之间,你定义的函数foo()此时不执行它 .
当使用foo()在另一个代码中调用此函数时,将执行此代码
当你调用foo()并执行foo()代码时,当你调用foo()并执行foo()代码时,你首先执行
conn = net.createConnection(net.TCP, 0)
创建(在当前)套接字并将其分配给变量conn . conn是那个时刻的soket .
然后,
conn:on("connection", function()
text = "some text\r\n"
conn:send(text)
end)
您指定一个回调函数,该函数将在套接字实现连接时在(将来)事件中执行 .
然后,
conn:connect(5000,"192.168.240.1")
你要求插件尝试连接并执行函数foo()结束(并返回foo())
在一个假想的时间线上,事情可能会像这样 .
当解释器读取代码[function foo()... end]时,函数foo()被定义,但不被执行 .
0us foo() foo()代码开始执行,因为我们调用foo()
20us net.create... 已创建套接字
40us conn:on... 某些回调函数被指定为de socket
60us conn:connect.. 套接字开始尝试连接
65 us foo()函数结束并返回,并执行“另一个代码”
120 us套接字实现连接并触发回调函数
125 us回调代码:
text = "some text\r\n"
conn:send(text)
与“另一个代码”并行执行
未来事件“套接字连接”将来会触发conn:on()的回调 .