Javascript 如何在React Native中从异步JS函数返回变量值

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 =

我正在尝试将外部URL加载到React本机应用程序中,然后从中提取
元素。我不想使用,因为这应该发生在后台。我正在利用图书馆来实现它。但是,我无法从
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我强烈建议您浏览上述链接,以正确理解异步函数和承诺的处理。