函数返回未定义,但变量在函数范围内未定义

时间:2019-12-04 00:29:33

标签: javascript node.js function httprequest undefined

在这里,我有一个非常简单的功能,试图从r / askreddit获取帖子。

const simple_get = require('simple-get');

function get_post() {
  simple_get('https://reddit.com/r/askreddit/random.json', (err, res) => {
    if (err) {
      console.log(err);
    }

    let body = '';

    res.on('data', (chunk) => {
      body += chunk;
    });

    res.on('end', () => {
      var post = JSON.parse(JSON.stringify(eval('(' + body + ')')))
      console.log(post);
      return post;
    });
  });
}

console.log(get_post());

该函数返回undefined。但是,在第17行(在函数内部)输出post时,它将返回正确的对象。这是一些日志:

  

未定义..... reddit.js:23

     

Array(2)[Object,Object] ..... reddit.js:17

除了简单地返回post外,我还尝试制作一个全局变量并将其设置为post。那也没有用。我需要它作为一个函数,因此我可以在while循环中对其进行设置,以进行诸如获取新帖子(如果是mod帖子)之类的事情,因此,也欢迎您选择它。

在MacOS Mojave 10.14.6上具有简单获取3.1.0的节点版本10.15.0。

感谢您的帮助:)

1 个答案:

答案 0 :(得分:0)

simple_get是一个异步函数,这意味着您的代码在实际收到任何响应之前先经过console.log()