在JS中返回https.get的结果

时间:2018-04-03 15:38:33

标签: javascript http return

我试图在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的新手。 非常感谢

1 个答案:

答案 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而不是回调。