Javascript 如何在React Native中从异步JS函数返回变量值
我正在尝试将外部URL加载到React本机应用程序中,然后从中提取Javascript 如何在React Native中从异步JS函数返回变量值,javascript,react-native,dom,react-native-android,Javascript,React Native,Dom,React Native Android,我正在尝试将外部URL加载到React本机应用程序中,然后从中提取元素。我不想使用,因为这应该发生在后台。我正在利用图书馆来实现它。但是,我无法从findproduct()返回product\u name的值。运行该功能时,它会在控制台中记录正确的product_name,表明代码工作正常。但是当我想将product\u name的值置于findproduct()之外并在其他地方使用时,问题就出现了 async function findproduct(){ var DomParser =
元素。我不想使用,因为这应该发生在后台。我正在利用图书馆来实现它。但是,我无法从findproduct()
返回product\u name
的值。运行该功能时,它会在控制台中记录正确的product_name
,表明代码工作正常。但是当我想将product\u name
的值置于findproduct()之外并在其他地方使用时,问题就出现了
async function findproduct(){
var DomParser = require('dom-parser');
var parser = new DomParser()
const html = (await (await fetch(product)).text()); // html as text
var dom = parser.parseFromString(html);
const product_name = dom.getElementsByTagName("TITLE")[0].innerHTML;
console.log("name="+product_name); //this logs correctly
return product_name;
}
productname = findproduct(); //this logs something else
console.log(productname);
这里,productname
是未定义的,或者类似于{“\U:0”,“\U V:0”,“\U W:null”,“\U X:null}
。我四处搜索,但我所了解的是,有其他方法可以从异步函数
返回变量。没有别的了。我需要将productname
插入数据库。所以,我需要精确的值。我也试图拖延,但没有任何收获。在这种情况下,延迟似乎根本不起作用。它只需先记录productname
,然后再记录product\u name
setTimeout(()=>{
productname = findproduct(product);
console.log(productname);
},5000)
我用那个异步函数做错了什么?非常感谢您的帮助。异步
函数返回的是一个承诺
,而不是实际值。所以,要得到实际值,你必须这样做
findproduct().then((productname) => console.log(productname))
如果你想做某事,你可以这样使用它
findproduct().then((productname) => {
//do what you want to do with productname
})
@Sennen Randika是正确的,我只是添加了一些资源,以便您可以了解更多信息,因为异步函数和承诺对于JavaScript和一般来说都非常重要
.@Vishal DS我强烈建议您浏览上述链接,以正确理解异步函数和承诺的处理。