Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript http.ClientRequest在node.js中实现接口意味着什么?_Javascript_Node.js - Fatal编程技术网

Javascript http.ClientRequest在node.js中实现接口意味着什么?

Javascript http.ClientRequest在node.js中实现接口意味着什么?,javascript,node.js,Javascript,Node.js,我在读,上面写着。。。“请求实现了可写流接口。这是一个EventEmitter。”这是什么意思?这是否意味着http.ClientRequest获取可写流和EventEmitter获取的所有方法和事件,并且它将接受的参数与EventEmitter(事件、侦听器)相同 如果这是正确的,那么在。。。在http.request的回调函数中有一行写着res.on('data',…)?文档中说这个res参数实现了http.ClientRequest,但是当我选中时,stream.Readable而不是st

我在读,上面写着。。。“请求实现了可写流接口。这是一个EventEmitter。”这是什么意思?这是否意味着http.ClientRequest获取可写流和EventEmitter获取的所有方法和事件,并且它将接受的参数与EventEmitter(事件、侦听器)相同

如果这是正确的,那么在。。。在http.request的回调函数中有一行写着res.on('data',…)?文档中说这个res参数实现了http.ClientRequest,但是当我选中时,stream.Readable而不是stream.Writable列出了“data”事件

以下是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();

第一个答案是肯定的,根据, 所有流都是EventEmitter的实例

关于第二个问题

文档中说这个res参数实现了http.ClientRequest

没有。返回的对象(即
req
)是实现可写流的ClientRequest的一个实例,在示例代码中,
data
事件绑定到可读流的
res
。发言人说:


不要将
请求
响应
混淆:)

它实现了这两种功能:在回调外部可写,在回调内部可读……值得注意的是,流是在事件发射器之上实现的。换句话说,节点中的每个流也是一个事件发射器。
http.request() returns an instance of the http.ClientRequest class.