我正在尝试在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)
})
})
,但目的是编写一个函数,该函数会根据我提出的URL返回"值"。类似:
function getValueFromUrl(url) {
// code on top to get "value"
return value }
但是,在我返回它的所有尝试之后,我无法访问" value"。我怎样才能做到这一点 ?我是新来的。非常感谢
,因为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);
});
另外,您可以使用诺言或等待/异步而不是回调。