如何从异步函数返回值?我试着喜欢这个
const axios = require('axios');
async function getData() {
const data = await axios.get('https://jsonplaceholder.typicode.com/posts');
return data;
}
console.log(getData());
它返回给我这个,
Promise { <pending> }
如何从异步函数返回值?我试着喜欢这个
const axios = require('axios');
async function getData() {
const data = await axios.get('https://jsonplaceholder.typicode.com/posts');
return data;
}
console.log(getData());
它返回给我这个,
Promise { <pending> }
你不能await
做一些超出async
范围的事情。要获得预期的结果,您应该将您的内容包装console.log
到异步 IIFE 中,即
async function getData() {
return await axios.get('https://jsonplaceholder.typicode.com/posts');
}
(async () => {
console.log(await getData())
})()
Working
样本。
有关的更多信息 async/await
由于axios
返回一个Promise,async/await
因此可以getData
像这样省略函数:
function getData() {
return axios.get('https://jsonplaceholder.typicode.com/posts');
}
然后像我们以前一样做
(async () => {
console.log(await getData())
})()
您的函数 getData 将返回一个 Promise。
所以你可以:
await
函数也可以得到结果。但是,为了能够使用await
,您需要在一个async
函数中,因此您需要“包装”这个:
async function callAsync() {
var x = await getData();
console.log(x);
}
callAsync();
(为了清楚起见,我命名了该函数,但在这种情况下,人们宁愿使用匿名函数调用;请参阅 TheReason 的回答。)
或者
将结果用作正常的 Promise,这是异步函数返回的结果。
您必须使用then
回调:
getData().then(x => {
console.log(x);
});
其他答案已经涵盖了这个罚款;但我想说的是养成创建和调用main
函数的习惯,而不是在全局范围内运行。IE
async function main(){
let result = await getData();
}
main().catch(console.log);
任何阅读您代码的人都非常清楚这是您的应用程序入口点