javascript - 如何知道何时收到所有 block

标签 javascript node.js

我正在做这样的 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 对象的形式出现,但是我在我的回调中以缓冲区数组和多个 block 的形式获得它(我的回调被调用了多次)。我怎么知道何时收到所有 block ?以及如何将此数组缓冲区转换为 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);
    });
}

然后以回调函数作为参数调用getHttpsData函数。

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

关于javascript - 如何知道何时收到所有 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35113431/

相关文章:

javascript - 使div从左到右堆叠而不指定左像素距离

javascript - 如何使用 jQuery 使用多个数据属性和多个逻辑条件选择 li

Node.js:如何在控制台中禁用颜色?

node.js - 在 BeagleBone Black 上使用 NodeJS 的网络摄像头

javascript - 使用 node.js 和 socket.io 在 key 之间创建私有(private)聊天

javascript - 在 Canvas 中创建随机形状

javascript - 将 document.write 与 <object> 一起使用

javascript - 在 JS 中组合数组

javascript - 客户端 websocket 限制消息长度

node.js - 在 Parse 服务器 CloudCode 中使用已初始化的邮件适配器