Node.js https.get响应ondata回调多次激发
在使用Facebook graph api时,我使用https.get请求Facebook用户数据Node.js https.get响应ondata回调多次激发,node.js,facebook-graph-api,Node.js,Facebook Graph Api,在使用Facebook graph api时,我使用https.get请求Facebook用户数据 var optionsP = { host: 'graph.facebook.com', path: '/me?access_token=XXXX' }; https.get(optionsP, function(resp) { resp.on
var optionsP = {
host: 'graph.facebook.com',
path: '/me?access_token=XXXX'
};
https.get(optionsP, function(resp) {
resp.on('data', function(d) {
console.log('ondata')
console.log(d.length)
process.stdout.write(d)
});
}).on('error', function(e) {
console.error(e);
});
但是响应数据分为两部分!第一次打印最多1034个字符时,同样的回调将再次工作并打印剩余的1347个字符。这些部分反应的原因是什么 这很正常
resp
是一个流。它是一个ClientResponse对象,实现可读流接口。以下是文件:
您可以通过管道将输出传输到接受流的某个位置,或者将其存储在缓冲区中,直到接收到“end”事件
下面是一个示例,它将数据存储在内存中的字符串中,直到数据全部到达:
https.get(optionsP, function(resp) {
resp.setEncoding(); //Now the data is a string!
var store = "";
resp.on('data', function(d) {
store += d;
});
resp.on('end', function() {
console.log("this is all: " + store);
});
}).on('error', function(e) {
console.error(e);
});
谢谢你,罗德瑞。。。根据文档“事件:当接收到消息正文的一部分时,会发出数据”。因此,我们必须添加这些片段以形成完整的消息正文。:)