这个问题以前可能在这里问过,很抱歉,但我无法在任何地方找到解决我的问题的方法。我对 JavaScript 比较陌生,像 “promises” 这样的东西对我来说很陌生。我正在尝试编写一个从 .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)
以“待处理”状态显示此承诺 - 并且显示比加载数组更快,如果我理解正确。
然而,mainFunction()
的以下代码强烈依赖于该数组,并且在加载数组之前不应继续执行。我哪里出错了?
非常感谢您的回复。
答案 0 :(得分:2)
此时,fetchTags
是一个异步函数,调用时需要这样处理。您在此处有两个实施选项:
async/await
用于 mainFunction
函数:async function mainFunction() {
let tags = await fetchTags()
console.log(tags)
}
function mainFunction() {
fetchTags()
.then(console.log)
.catch(console.error)
}