首页  >  问答  >  正文

如何从Promise响应中返回数据

<p>如何正确地从Promise中返回数据?我有以下代码:</p> <pre class="brush:php;toolbar:false;">const axios = require("axios").default; async function getApiData(pathName: string, locale: string) { const {axiosRequestUrl} = getApiVars(pathName, locale); const axiosClient = axios.create({ baseURL: process.env.CONTENT_DOMAIN, proxy: false }) return await axiosClient.get(axiosRequestUrl); } export default function getPageData() { getApiData('shared-content', 'en-us') .then((data) => { return data; }) .catch((error: any) => { // log error here }) }</pre> <p>但是,如果我尝试从组件中使用getPageData,最终得到的是一个不返回任何内容的void函数,为什么?我在这里漏掉了什么?</p>
P粉988025835P粉988025835474 天前438

全部回复(1)我来回复

  • P粉426906369

    P粉4269063692023-07-29 00:59:48

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

    例如:


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

    进一步的两个提示:

    您需要解析这个Promise才能读取数据。

    您可以决定在这里或者调用层次结构较高的位置进行错误处理

    经验法则:

    async函数只是返回一个Promise对象的函数。

    只有在Promise被解析(使用await或.then())时才会返回实际数据

    回复
    0
  • 取消回复