В этом фрагменте кода между функцией foo() и end вы определяете функцию foo(), не выполняя ее в данный момент.
Этот код будет выполняться, когда эта функция вызывается в другом коде с помощью функции foo().
Когда вы вызываете foo() и выполняется код foo(), когда вы вызываете foo() и выполняется код foo(), вы сначала
conn = net.createConnection(net.TCP, 0)
создать (в настоящем) сокет и присвоить его переменной conn. conn — это сокет с этого момента.
Затем,
conn:on("connection", function()
text = "some text\r\n"
conn:send(text)
end)
вы назначаете функцию обратного вызова, которая будет выполняться в (будущем) событии, когда сокет установит соединение.
Затем,
conn:connect(5000,"192.168.240.1")
вы просите плагин попробовать соединение и выполнение функции foo() заканчивается (и foo() возвращается)
В воображаемой временной шкале все могло бы пойти так.
Когда интерпретатор читает код [функция foo() ... end], функция foo() определяется, но не выполняется.
0us foo() Код foo() начинает выполняться, потому что мы вызываем foo()
20us net.create... Сокет создан
40us conn:on... Определенная функция обратного вызова назначается сокету
60us conn:connect.. Сокет начинает попытку подключения
65 мкс Функция foo() завершается и возвращается, и выполняется "другой код"
120 мкс Сокет устанавливает соединение и запускается функция обратного вызова
125 us Код обратного вызова:
text = "some text\r\n"
conn:send(text)
выполняется параллельно с "другим кодом"
Будущее событие «сокет подключен» запускает в будущем обратный вызов, назначенный в настоящем, с помощью conn: on ()
person
Mitxel
schedule
07.12.2016
foo()
? - person gre_gor   schedule 07.12.2016