节点Async.each http.get请求没有触发/等待

时间:2016-08-25 22:43:41

标签: node.js http asynchronous

我有一个更大的流程在API响应中运行大量的位置/设备,我试图访问单个设备并将其转换为我的目标系统将理解的响应。但是,似乎我的内联HTTP请求没有被触发。

我已经尝试将回调移出' end'事件,但我甚至没有在功能中更早地获取日志记录。我得到的唯一日志记录输出是区域xyz"

的"获取状态
async.each(tempSystem.zones, function(zone, zoneCallback) {
    var applianceDiscovered = {};
    console.log("getting status for zone", zone);
    var options = {
        host: host,
        path: '/webapi/' + zone.zoneId + '/status',
        headers: {'Authorization' : 'Bearer ' + accessToken}
    };
    var req = https.get(options, function(res) {
        if (res.statusCode != 200) {
            console.log("error ", res.statusCode);
        }
        console.log(res);
        var bodyChunks = [];
        res.on('data', function(chunk) {
            bodyChunks.push(chunk);
        });
        res.on('end', function() {
            if (res.statusCode === 200) {
            console.log("get zone status: ", res.statusCode);
            var body = Buffer.concat(bodyChunks);
            var zoneStatus = JSON.parse(body);
            console.log(zoneStatus);
            zoneCallback();
            } else {
                console.log(res.statusCode);
            }
        });
        res.on('error', function(error) {
            console.log(error);
        });  
    });
    req.on('error', function(e) {
        console.log("error: ", e);
    });
}, function(err){
    console.log("finished with zones");
});

0 个答案:

没有答案