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