这个问题以前可能在这里被问过,很抱歉,但我在任何地方都找不到解决问题的方法。我对JavaScript和";承诺">对我来说是陌生的。我正在尝试制作一个代码,从.JSON文件加载一个数组,加载后,代码将继续。
async function fetchTags() {
var response = await fetch('../json/tags.json');
var json = await response.json();
console.log(json); // returns: Array()
return json;
}
function mainFunction() {
let tags = fetchTags();
console.log(tags); // returns: Promise { <state>: "pending" }
}
这就是我当前的代码,使用一个不工作的";解决方案";我在网上找到的。当异步函数内部的console.log(json)
正确地返回数组时,主函数的console.log(tags)
用";挂起";state,如果我理解正确的话,它会在数组加载之前显示。
然而,mainFunction()
的以下代码强烈依赖于此数组,并且在加载数组之前不应继续执行。我在哪里犯错误?
非常感谢您的回复。
此时,fetchTags
是一个异步函数,在调用它时需要将其视为异步函数
- 将
async/await
用于mainFunction
函数:
async function mainFunction() {
let tags = await fetchTags()
console.log(tags)
}
- 适当处理函数返回的promise:
function mainFunction() {
fetchTags()
.then(console.log)
.catch(console.error)
}