关于node.js中response的end事件是否一定要先监听了data事件才能被emit
本文介绍了关于node.js中response的end事件是否一定要先监听了data事件才能被emit的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
//server.js
var qs = require('querystring');
require('http').createServer(function(req, res){
var body = '';
req.on('data', function(chunk){
body += chunk;
});
req.on('end', function(){
res.writeHead(200);
res.end('Done');
console.log('\n got name \033[90m' + qs.parse(body).name + '\033[39m\n');
});
}).listen(3000);
//client.js
var http = require('http'), qs = require('querystring');
function send(theName){
http.request({
host: '127.0.0.1',
port: 3000,
url: '/',
method: 'POST'
}, function(res){
res.setEncoding('utf8');
//res.on('data', function(){return ;});
res.on('end', function(){
console.log('\n \033[90m request complete!\033[39m');
process.stdout.write('\n your name: ');
});
}).end(qs.stringify({name: theName}));
}
process.stdout.write('\n your name: ');
process.stdin.resume();
process.stdin.setEncoding('utf-8');
process.stdin.on('data', function(name){
send(name.replace('\n', ''));
});
-----------------------------------------------------------------------------------------------摘自《了不起的Node.js》P98 - P99
将client.js中监听data的事件注视掉的话 就不会执行end事件中的回调函数
希望能够帮忙解释一下, 谢谢.
顺便问一下 遇到这种问题应该如何解决 好让我下次能够自己解决, 谢谢.
解决方案
end是把数据读完后产生的事件。
这篇关于关于node.js中response的end事件是否一定要先监听了data事件才能被emit的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文