我已经从https://www.tomas-dvorak.cz/posts/nodejs-request-without-dependencies/复制了很好的代码,以便使用本机模块在nodejs中发出http请求。
我希望以后可以在脚本中使用data
值。
我知道这是新手和异步代码的常见问题,我只是还不了解,并且为获得它而奋斗了数周。
我应付了很多代码,观看了youtube,与人们交谈,这真是难得一见。
const getContent = function(url) {
return new Promise((resolve, reject) => {
const https = require('https')
const request = https.get(url, (response) => {
// handle http errors
if (response.statusCode < 200 || response.statusCode > 299) {
reject(new Error('Failed to load page, status code: ' + response.statusCode));
}
// temporary data holder
const body = [];
// on every content chunk, push it to the data array
response.on('data', (chunk) => body.push(chunk));
// we are done, resolve promise with those joined chunks
response.on('end', () => resolve(body.join('')));
});
// handle connection errors of the request
request.on('error', (err) => reject(err))
})
}
getContent('https://myapi/json')
.then((data) => console.log(data))
.catch((err) => console.error(err))
// I want to use the "data" value down here in my script. I want to do things with the "data" value like JSON.parse(data)
console.log(data) //undefined
let json = JSON.parse(data) //undefined
console.log('after')
我的数据结果是undefined
如何在上面所有代码下方使用data
?
答案 0 :(得分:0)
您可以设置一个回调并在此回调中访问数据,此模式应该足够易于使用。
getContent('https://myapi/json')
.then(useData)
.catch((err) => console.error(err))
// Use this callback to do what you want with your data!
function useData(data) {
console.log(data);
let json = JSON.parse(data);
}
或使用异步/等待(这可能更直观!):
async function testAwait() {
let data = await getContent('https://myapi/json');
console.log("data: ", data);
}
testAwait();