这些代码有什么区别?
***首先*
var express = require('express');
var app = express();
app.post('/', function (req, res) {
console.log('Procesando abastecimiento...');
var rawData = '';
req.on('data', function (chunk) {
rawData += chunk;
});
req.on('end', function(){
console.log('Data recibida: ' + rawData);
res.end();
});
});
第二
var express = require('express');
var app = express();
app.post('/', function (req, res) {
console.log('Procesando abastecimiento...');
var rawData = '';
req.on('data', function (chunk) {
rawData += chunk;
});
req.on('end', function(){
console.log('Data recibida: ' + rawData);
});
res.end();
});
如果我关闭内部的连接(res.end()
)'结束'事件的回调,客户端会等到读取所有数据吗?我不明白其中的区别,我只知道我的代码使用第二种方式更快。你能解释一下为什么吗?
答案 0 :(得分:1)
在第一个示例中,您设置要在请求res.end();
回调上执行的end
指令(即,然后引发end
事件)。
在第二个中,您可以立即致电res.end();
,而无需等待结束请求。
您可以将其视为指令req.on('end', ...)
是为将来会发生的事件设置处理程序的函数,但是在收到事件之前不会执行代码。