Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 节点JS HTTPS请求返回_Javascript_Node.js - Fatal编程技术网

Javascript 节点JS HTTPS请求返回

Javascript 节点JS HTTPS请求返回,javascript,node.js,Javascript,Node.js,我试图从一个网站获取一个文本,并将文本放入一个变量中。然后我想要一个if语句,如果变量==“something”,那么就使用do函数。现在,这是我的代码,我似乎无法在函数中定义变量。如果我这样做,我就不能在If语句的函数外使用变量 const superagent = require('superagent'); (async function(){ const response = await superagent.get('https://www.google.com') var

我试图从一个网站获取一个文本,并将文本放入一个变量中。然后我想要一个if语句,如果变量==“something”,那么就使用do函数。现在,这是我的代码,我似乎无法在函数中定义变量。如果我这样做,我就不能在If语句的函数外使用变量

const superagent = require('superagent');

(async function(){
  const response = await superagent.get('https://www.google.com')
  var text = (response.text)
})();

if (text == "something"){
    //do something
}
上面的代码返回“文本未定义”

有3个问题:

  • 在尝试读取
    text
    之前,您没有等待异步函数完成,因此
    text
    在您执行
    console.log(text)

  • text
    未在异步调用外部定义,因此在异步调用外部不可见。即使修复了异步调用,它仍然不可见

  • 不可能在异步上下文之外等待异步函数。因此,您无法等待该自动执行函数

  • 你的选择? 使异步函数返回所需的值,并将其作为
    text

    (async function(){
      const response = await superagent.get('https://www.google.com')
      return response.text
    })().then(function(text) {
        console.log(text);
    }
    
    存在其他选项,但无法转义
    async
    函数。任何返回的值都必须在
    异步
    上下文中进行评估,或者按照上面所示的方式使用