如何使用 async-await from function 从 async 函数返回值?

如何从异步函数返回值?我试图喜欢这个

const axios = require('axios');
async function getData() {
    const data = await axios.get('https://jsonplaceholder.typicode.com/posts');
    return data;
}
console.log(getData());

它把我送回去,

Promise { <pending> }

答案 1

你不能超出范围的东西。要获得预期的结果,您应该将您包装到异步IIFE中,即awaitasyncconsole.log

async function getData() {
  return await axios.get('https://jsonplaceholder.typicode.com/posts');
}

(async () => {
  console.log(await getData())
})()

工作示例。

有关异步/等待的详细信息

由于返回一个 promise,因此可以省略函数,如下所示:axiosasync/awaitgetData

function getData() {
  return axios.get('https://jsonplaceholder.typicode.com/posts');
}

然后像以前一样做同样的事情

(async () => {
   console.log(await getData())
})()

答案 2

你的函数 getData 将返回一个 Promise。

因此,您可以:

  • await该函数也用于获取结果。但是,为了能够使用 ,您需要在函数中,因此您需要“包装”以下内容:awaitasync

    async function callAsync() {
       var x = await getData();
       console.log(x);
    }
    callAsync();
    

    (为了清楚起见,我命名了该函数,但在这种情况下,人们宁愿使用匿名函数调用;请参阅TheReason的答案

  • 将结果用作正常 Promise,这是异步函数返回的内容。
    您必须使用回调:then

    getData().then(x => { 
        console.log(x); 
    });