【问题标题】:How can I assign a variable the promise results of an async function? [duplicate]如何为变量分配异步函数的承诺结果? [复制]
【发布时间】:2021-10-15 07:06:04
【问题描述】:

我正在尝试从这个站点学习如何使用 axios:Asynchronous Javascript using Async - Await

async function getGamerDescription() {
    const text = await axios.get(`/api/gamer/${id}/gamerBio`);
    return text.data;
}

console.log("bio: ", getGamerDescription());

给我:

bio:  Promise {<pending>}

如果我将 console.log 放在 getGamerDescription() 函数中,它会写出我需要的生物文本。

但我需要将生物文本分配给一个变量,以便在我的网站上显示它。

有没有办法做到这一点?

我发现了一些其他的 SO 问题:

Axios returns promise pending

My call async/await returns a Promise {} in my actions

但他们没有帮助。

我只是希望能够获取该值,以便将其分配给变量。

【问题讨论】:

标签: javascript reactjs async-await axios


【解决方案1】:

一个异步函数会自动变成一个promise,所以在这种情况下getGamerDescription实际上是一个promise,所以你必须在记录它的时候使用await,但是await只能在异步函数内部调用,所以试试这个:

async function getGamerDescription() {
    const text = await axios.get(`/api/gamer/${id}/gamerBio`);
    return text.data;
}

(async () => console.log("bio: ", await getGamerDescription()))();

请注意,我将 console.log 包装在 async IIFE 中,并在 console.log 中使用了 await,这是因为我将 async 函数 getGamerDescription 视为一个承诺。如果你想将它分配给一个变量,你需要在另一个 async 函数中使用 await 来做到这一点

【讨论】:

  • 但如何将其分配给变量?就像我需要在我的网站上显示简历一样,这意味着我的整个组件都需要是 async?
  • 在另一个异步函数内部const something = await getGamerDescription()
猜你喜欢
  • 2018-08-30
  • 2020-10-05
  • 2020-05-10
  • 2020-08-27
  • 2019-09-18
  • 2019-08-30
  • 2015-12-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多