了解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', ...)
是一个为将来会发生的事件设置处理程序的函数,但是直到事件发生时才会执行代码接收。
- SocketIO-GET http:// localhost:3000 / socket.io /?EIO = 3&transport = polling&t = 1418187395022-0 404(Not Found)
- 从Python框架expressionJS装饰器模式的等价物
- Jade with Express – ReferenceError:窗口未定义
- 用ejs和节点创builddynamichtml
- ExpressJS:如何使用参数redirectPOST请求
- 在NodeJS的所有请求中包含我的连接是否可以?
- 使用Jade显示input值内的数据
- 使用快递,如何加载控制器代码更改,而无需重新启动服务器?
- 如何直接使用EJS模板引擎打印variables?