了解Node中的非阻塞IO
这些代码有什么区别?
***第一*
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(); });
如果closures“end”事件callback中的连接( res.end()
),客户端是否等待直到所有数据都被读取? 我不明白区别,我只知道我的代码更快地使用第二种方法。 你能解释我为什么吗?
在第一个例子中,你设置了res.end();
指令在请求end
callback中被执行(即end
事件被引发)。
在第二个你调用res.end();
马上没有等待请求结束。
你可以把它看作是req.on('end', ...)
是一个为将来会发生的事件设置处理程序的函数,但是直到事件发生时才会执行代码接收。