节点JS HTTPS请求返回

时间:2018-12-18 02:13:30

标签: javascript node.js

我正在尝试从网站获取文本,并将文本放入变量中。然后,我想要一个if语句,如果变量==“ something”,则可以执行功能。到目前为止,这是我的代码,我似乎无法在函数中定义变量。如果这样做,我将无法在函数外部使用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
}

我上面的代码返回“未定义文本”

1 个答案:

答案 0 :(得分:0)

有3个问题:

  1. 在尝试读取text之前,您无需等待异步功能完成,因此在执行textconsole.log(text)不可用

    < / li>
  2. text未在异步调用外部定义,因此在异步调用外部不可见。即使您修复了异步调用,它仍将不可见

  3. 不可能在异步上下文之外await使用异步函数。因此,您无法等待自执行功能

您的选择吗?

使异步函数返回所需的值,并将其获取为text

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

存在其他选项,但是没有逃避async函数的作用。返回的任何值都必须在async上下文中进行评估或以我上面显示的方式使用