Vis*_* DS 3 javascript dom react-native react-native-android
我正在尝试将外部 URL 加载到 React Native 应用程序中,然后从中提取<title>元素。我不想使用WebView,因为这应该在后台发生。我正在使用dom-parser库来实现它。但是, I 无法返回product_namefrom的值findproduct()。运行该函数时,它确实product_name在控制台中记录了正确的值,表明代码运行良好。但是当我想获取product_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);
Run Code Online (Sandbox Code Playgroud)
在这里,productname要么是未定义的,要么是类似{"_U": 0, "_V": 0, "_W": null, "_X": null}. 我四处搜索,但我所了解的是还有其他一些方法可以从async function. 没有其他的。我需要插入productname到数据库中。所以,我需要确切的值。我也试图延迟但没有收获。在这种情况下,延迟似乎不起作用。它只是productname先记录,然后记录product_name。
setTimeout(()=>{
productname = findproduct(product);
console.log(productname);
},5000)
Run Code Online (Sandbox Code Playgroud)
我用那个异步函数做错了什么?任何帮助将不胜感激。
这些async函数返回一个Promise而不是实际值。因此,要获得实际值,您必须这样做。
findproduct().then((productname) => console.log(productname))
Run Code Online (Sandbox Code Playgroud)
如果你想做某事,你可以像这样使用它......
findproduct().then((productname) => {
//do what you want to do with productname
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2249 次 |
| 最近记录: |