我需要从API提取一些JSON数据并将结果分配给变量。我可以在控制台中看到数据数组,但是[abc]始终设置为Pending promise。
我尝试分配[abc]而不是记录[data]或仅返回[data],但是它不起作用。 理想情况下,我还想停止执行以下代码,直到获得所需的数据为止,但是使用我拥有的代码,文本会在数据之前记录下来
async function fetchData()
{
let response = await fetch('API');
let data = await response.json();
data = JSON.stringify(data);
data = JSON.parse(data);
return data;
}
let abc = await fetchData()
.then(data => console.log(data));
console.log('This should not be logged if 'abc' does not have the data i need')
(data => console.log(data)).. >>这里的数据是我需要的数组,但是我不知道如何在变量上赋值。
我已经在互联网上寻找了许多解决方案,但是找不到任何可以帮助您的东西。
编辑1:
如果我分配: 让abc =等待fetchData() 如果没有then语句,它将抛出此错误: 未捕获的SyntaxError:等待仅在异步函数中有效
如果我随后删除了await关键字,它将返回Promise而没有解决。
答案 0 :(得分:0)
应该是这样
async function fetchData(){
let response = await fetch('API');
let data = await response.json();
data = JSON.stringify(data);
data = JSON.parse(data);
return data;
}
let abc = await fetchData(); // here the data will be return.
console.log(abc); // you are using async await then no need of .then().
答案 1 :(得分:0)
为使await
关键字起作用,它必须位于async
函数内部。因此,您需要先将代码包装在一个异步函数中,比如说一个主函数,然后再调用它。示例:
async function fetchData() {...}
async function main() {
let abc = await fetchData();
console.log(abc);
}
main();