Node.js的website says框架"当没有更多的回调要执行时退出事件循环。"
我发现在任何地方都清楚解释的是,一旦启动等待输入的I / O模块,事件循环就会继续运行。例如,在这个规范的“Hello World"在HTTP服务器示例中,Node.js继续无限期地侦听传入的HTTP请求:
string input = "t1326".Replace("t", "").PadLeft(4, '0');
string pattern = "HHmm";
DateTime dt;
DateTime.TryParseExact(input, pattern, null,
DateTimeStyles.None, out dt);
Console.WriteLine(dt.ToString("h:mm tt")); //outputs 1:26 PM
string reverse = String.Format("t{0}",dt.ToString("HHmm"));
Console.WriteLine(reverse); //outputs t1326
虽然对于隐式require('http').createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello World\n');
}).listen(8080);
事件处理程序的回调总是存在 potential ,但在实际的HTTP请求进入之前,没有事件被处理。这是否意味着Node.js网站上的声明并非严格正确?或者我在这里有一些细微差别?
答案 0 :(得分:0)
细微差别在于引擎盖下的回调"同样。
在这种情况下,HTTP服务器正在等待TCP端口上的传入连接,并且在该端口显式关闭(server.close()
)之前,这会添加到挂起的回调列表中。
您甚至不必定义请求处理程序来证明这一点:
require('http').createServer().listen(8080);
这显示了几秒钟后关闭端口时会发生什么:
var server = require('http').createServer().listen(8080);
setTimeout(function() {
server.close();
}, 2000);