axios 如何从Promise响应返回数据?[副本]

t1qtbnec  于 2023-08-04  发布在  iOS
关注(0)|答案(1)|浏览(152)

此问题在此处已有答案

How do I return the response from an asynchronous call?(42答案)
17天前关闭。
从Promise返回数据的正确方法是什么?我有以下代码:

  1. const axios = require("axios").default;
  2. async function getApiData(pathName: string, locale: string) {
  3. const {axiosRequestUrl} = getApiVars(pathName, locale);
  4. const axiosClient = axios.create({
  5. baseURL: process.env.CONTENT_DOMAIN,
  6. proxy: false
  7. })
  8. return await axiosClient.get(axiosRequestUrl);
  9. }
  10. export default function getPageData() {
  11. getApiData('shared-content', 'en-us')
  12. .then((data) => {
  13. return data;
  14. })
  15. .catch((error: any) => {
  16. // log error here
  17. })
  18. }

字符串
但是如果我试图从一个组件中使用getPageData,我最终得到一个不返回任何东西的void函数,为什么?我在这里错过了什么?

dxpyg8gm

dxpyg8gm1#

至少,您的getPageData函数本身应该是一个async函数(为了代码可读性的清晰性),它将返回由getApiData调用返回的promise。
例如,在

  1. export default async function getPageData() {
  2. return getApiData('shared-content', 'en-us');
  3. }

字符串
另外两个提示:

  • 您需要解析此promise才能读取数据。
  • 您可以决定在调用层次结构的更高位置执行错误处理。

经验法则:

  • async函数只是一个返回Promise对象的函数。
  • promise只在解析时返回实际数据(使用await.then())。
展开查看全部

相关问题