我刚刚开始学习Node.js,我试图打印通过表单提交的输入的值。 下面可以找到我的完整代码 答案 0 :(得分:0) 经过一番研究,我发现出了什么问题。 这将阻止 我应该做的是返回 这将阻止执行 答案 1 :(得分:0) 修改 原始答案仍然适用,但我错过了一件事: 返回或不返回事件处理程序没有什么区别。它不会影响执行,并且返回的值不会在任何地方使用。 因此,对于修订版: 原始答案 我不是node http模块的专家,所以如果有人愿意填写,请这样做。那说: 两秒钟表示基础连接(实际的套接字,可能为其他请求而处于活动状态)超时。这很正常。 我想这里发生的事情是,由于您本质上是在耗尽请求流之前要求关闭响应流,因此即使有更多数据可用,请求流也会被关闭。请注意,实际的基础连接是双向的,并且结束响应传输意味着您对传入消息不再有兴趣。 要解决此问题,请将您的 @Scheduled(fixedRate = 1000)
始终会触发,而req.on('data')
则不会触发。
请有人能告诉我怎么了吗? req.on('end')
2 个答案:
req.on('end')
事件处理函数只是被注册的,但由于它是异步的,所以没有被触发。因此,它进入下一个代码块:res.setHeader('Content-Type', 'text/html');
res.write('<html>');
res.write('<head><title>My First Page</title></head>');
res.write('<body><h1>Hello from my Node.js Sever!</h1></body>');
res.write('</html>');
res.end();
req.on('end')
由于请求流已关闭而执行。req.on('end')
事件处理程序:return req.on('end', () => {
const parsedBody = Buffer.concat(body).toString();
console.log(parsedBody);
res.statusCode = 302;
res.setHeader('Location', '/');
return res.end();
});
req.*
语句之后的if (url === '/message' && method === 'POST')
语句块。if
块必须像原始帖子中那样返回-否则将运行它之后的响应操作,从而再次关闭req / res流。 / p>
if (url === '/message' && method === 'POST') {
// ...
req.on('end', () => {
const parsedBody = Buffer.concat(body).toString();
console.log(parsedBody);
res.statusCode = 302;
res.setHeader('Location', '/');
res.end();
});
return;
res.*
调用移至'end'
事件处理程序: req.on('end', () => {
const parsedBody = Buffer.concat(body).toString();
console.log(parsedBody);
res.statusCode = 302;
res.setHeader('Location', '/');
res.end();
});