我试图在JS中编写一个函数,它可以返回我从https.get请求获得的文本。
我发现此代码显示了我想要的文字:
const https = require('https')
https.get('http://mysiteweb.com/info', (resp) => {
let data = ''
let value = ''
// A chunk of data has been recieved.
resp.on('data', (chunk) => {
$data += chunk;
})
// The whole JSON response has been received, get the "value"
resp.on('end', () => {
value = JSON.parse(data).value
// print the text I want to return
console.log(value)
})
})
但目的是写一个函数,它返回"值"取决于我放的网址。类似的东西:
function getValueFromUrl(url) {
// code on top to get "value"
return value }
但我无法访问"价值"经过所有的努力,我已经做了回来。我怎样才能做到这一点 ?我是JS的新手。 非常感谢
答案 0 :(得分:0)
因为HTTP调用是异步的,所以你不能简单地返回value
,你需要提供一个在请求完成后调用的回调。
const https = require('https')
function getValueFromUrl(url, cb) {
https.get(url, (resp) => {
let data = ''
let value = ''
resp.on('data', chunk => data += chunk);
resp.on('end', () => {
value = JSON.parse(data).value
cb(null, value);
});
}).on('error', (err) => {
cb(err);
});
}
getValueFromUrl('http://mysiteweb.com/info', (err, value) => {
if (err) return console.error(err);
console.log(value);
});
或者,您可以使用Promises或await / async而不是回调。