每当我们向侦听服务器发出请求时,请考虑以下程序及其行为curl localhost:3000
。他们都会分享以下内容:
const http= require("http");
const server = http.createServer((req, res) => {
console.log("Got request");
setTimeout(() => {
res.end("Hello\n");
}, 10 * 1000);
});
// ... snippets below
server.listen(3000);
on("timeout")
with server.timeout
set
我们只是聆听timeout
事件。这timeout
值设置为5000
它是这样打印的。
server.on("timeout", () => {
console.log(server.timeout);
console.log("Timeout event");
});
server.timeout = 5 * 1000;
setTimeout()
and server.timeout
set
即使我们设定了时间setTimeout()
,我们没有看到Timeout CB
直到5秒后。
server.setTimeout(1 * 1000, () => {
console.log(server.timeout);
console.log("Timeout CB");
});
server.timeout = 5 * 1000;
setTimeout()
没有server.timeout
set
我们看到超时处理程序在 1 秒后发生,而不是默认的 2 分钟
server.on("timeout", () => {
console.log(server.timeout);
console.log("Timeout event");
});
on("timeout")
没有server.timeout
这还将服务器设置为在 10 分钟而不是 10 秒后响应。默认2分钟后,我们看到回调正常触发。
既on()
and setTimeout()
1秒后触发回调server.timeout
被设定为1000
.
结论
由此,我们可以假设setTimeout
是一种设置方法timeout
以编程方式。timeout
将设置timeout
但没有设置回调。on("timeout")
注册一个回调,该回调将在timeout
事件发生。