我正在阅读the documentation for http.ClientRequest它说...“请求实现了 Writable Stream 接口(interface)。这是一个 EventEmitter。”这是什么意思?这是否意味着 http.ClientRequest 获取了 Writable Stream 和 EventEmitter 获取的所有方法和事件,并且它将接受的参数与 EventEmitter(事件,监听器)相同?
如果这是正确的,那么 example code for http.request 中怎么会这样呢? ...在 http.request 的回调函数中,有一行写着 res.on('data', ...)?文档说这个 res 参数实现了 http.ClientRequest,但是当我检查时,列出了stream.Readable 的“data”事件,但没有列出stream.Writable。
以下是来自 url 的示例代码:
var options = {
hostname: 'www.google.com',
port: 80,
path: '/upload',
method: 'POST'
};
var req = http.request(options, function(res) {
console.log('STATUS: ' + res.statusCode);
console.log('HEADERS: ' + JSON.stringify(res.headers));
res.setEncoding('utf8');
res.on('data', function (chunk) {
console.log('BODY: ' + chunk);
});
});
req.on('error', function(e) {
console.log('problem with request: ' + e.message);
});
// write data to request body
req.write('data\n');
req.write('data\n');
req.end();
最佳答案
根据http://nodejs.org/api/stream.html#stream_stream,第一个答案是肯定的。 , 所有流都是 EventEmitter 的实例。
关于第二个问题,
The documentation says that this res parameter implements http.ClientRequest,
不。返回的对象(即req
)是实现可写流的ClientRequest实例,在示例代码中,data
事件绑定(bind)到可读流的res
。 doc说:
http.request() returns an instance of the http.ClientRequest class.
不要将请求
与响应
混淆。 :)
关于javascript - 在node.js中通过http.ClientRequest实现接口(interface)是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21101623/