如何知道何时收到所有的块

我正在做这样的https请求:

var req = https.request(options, function (res) { console.log('statusCode: ', res.statusCode); console.log('headers: ', res.headers); res.on('data', function (d) { // how to know when all chunks are received process.stdout.write(d); }); }); req.end(); 

响应来作为JSON对象,但是我在我的callback中得到它作为缓冲区数组和多个块(我的callback被称为几次)。 我怎么知道所有的块是什么时候收到的? 那么如何将这个数组缓冲区转换成JSON对象呢?

回应评论中的要求。

首先是将代码封装在另一个函数中。

 function getHttpsData(callback){ // pass additional parameter as callback var req = https.request(options, function (res) { console.log('statusCode: ', res.statusCode); console.log('headers: ', res.headers); var response = ''; res.on('data', function (d) { // how to know when all chunks are received //process.stdout.write(d); response+=d; }); res.on('end', function(){ var r = JSON.parse(response); callback(r); // Call the callback so that the data is available outside. }); }); req.end(); req.on('error', function(){ var r = {message:'Error'}; // you can even set the errors object as r. callback(r); }); } 

然后用一个callback函数作为参数调用getHttpsData函数。

 getHttpsData(function(data){ console.log(data);//data will be whatever you have returned from .on('end') or .on('error') });