【发布时间】:2017-03-12 14:40:55
【问题描述】:
我正在 NodeJS 上测试一小段代码,它应该创建一个 ClientRequest 对象并触发三个事件:
- “响应”事件
- “可读”事件
- “结束”事件
这是我正在测试的一段代码:
var http = require('http');
var server = http.createServer();
var link = "www.asos.com";
// now that server is running
server.listen(1337, '127.0.0.1', function(){
tryMe();
});
function tryMe(){
var options = {
hostname: link,
port: 80,
method: "GET"
};
var asosRequest = http.request(options);
asosRequest.on("response", function(res){
console.log("response");
});
asosRequest.on('readable', function() {
console.log("readable");
});
asosRequest.on('end', function(){
console.log("Bey!");
});
asosRequest.end();
}
我无法弄清楚为什么在我的情况下“可读”和“结束”事件不会触发。 “响应”事件工作正常并返回正确的信息和数据缓冲区。我对数据流在节点中的工作方式有什么误解吗?
新: 我使用节点版本 v7.7.2。 如果我尝试“数据”事件,它也不会触发。
新 p2:更仔细地阅读 NodeJS 文档后,我意识到我在错误的对象上调用事件,我必须在响应对象上调用它们。
【问题讨论】:
标签: javascript node.js stream