我正在尝试从网站获取文本,并将文本放入变量中。然后,我想要一个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
}
我上面的代码返回“未定义文本”
答案 0 :(得分:0)
有3个问题:
在尝试读取text
之前,您无需等待异步功能完成,因此在执行text
时console.log(text)
不可用
text
未在异步调用外部定义,因此在异步调用外部不可见。即使您修复了异步调用,它仍将不可见
不可能在异步上下文之外await
使用异步函数。因此,您无法等待自执行功能
使异步函数返回所需的值,并将其获取为text
;
(async function(){
const response = await superagent.get('https://www.google.com')
return response.text
})().then(function(text) {
console.log(text);
}
存在其他选项,但是没有逃避async
函数的作用。返回的任何值都必须在async
上下文中进行评估或以我上面显示的方式使用