首頁  >  問答  >  主體

如何從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 天前437

全部回覆(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
  • 取消回覆