我有以下代码:
var options1 = {
host: 'maps.googleapis.com',
port: 80,
path: "/maps/api/geocode/json?latlng=" + lat + "," + lng + "&sensor=false",
method: 'GET',
headers: {
'Content-Type': 'application/json'
}
};
var body1 = "";
var req = http.request(options1, 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);
body1 += chunk;
});
res.on('close', function () {
console.log('get_zillow : ' + body1);
});
});
req.on('error', function(e) {
console.log('problem with request: ' + e.message);
});
req.end();
console.log('get_zillow : ' + body1);
我需要用 JSON 响应的结果填充 body1。但是,第一个console.log('get_zillow : ' + body1);
永远不会被调用——由于某种原因,结果永远不会关闭——第二个console.log('get_zillow : ' + body1);
什么也不打印,因为它是异步的,并且在body1
填充之前被调用。
此外,我需要连续多次向不同的外部站点发出类似的请求,每个请求都依赖于上一个结果中的 json。有没有办法做到这一点,而无需编写三个凌乱的内部回调,并在 http 请求后以某种方式阻塞?