当我尝试调用另一个未识别的api时,我尝试将数据获取到变量“结果”
let results;
const req = https.request(options, (res) => {
res.setEncoding('utf8');
res.on('data', (body) => {
results = JSON.parse(body).payUrl;
});
res.on('end', () => {
console.log('No more data in response.');
});
});
console.log(results);
results = unidentified
答案 0 :(得分:1)
在https.request(options,(res)=>{})
中,res
是一个流,它将在事件“数据”上以块的形式发射数据。因此,您将一口气获得完整的数据。您将代码更改如下:
let results;
let url;
const req = https.request(options, (res) => {
res.setEncoding('utf8');
let body="";
res.on('data', (chunk) => {
body = body+chunk // aggregate data
})
res.on('end', () => {
// once data is completly fetched do JSON.parse();
console.log('No more data in response.')
results = JSON.parse(body);
console.log(results)
url = results.url
console.log(url);
})
});
req.on('error', (e) => {
// listen for error
console.log(e.message);
});
此外,https.request(options,(res)=>{})
是异步调用,因此即使在api调用完成之前,代码中的console.log(results)
也会被执行。