如何從Promise響應返回數據
P粉988025835
2023-07-28 10:32:51
<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>
至少,您的getPageData函數本身應該是一個async函數(為了程式碼可讀性的清晰),它將傳回getApiData呼叫傳回的Promise。
例如:
進一步的兩個提示:
您需要解析這個Promise才能讀取資料。
您可以決定在這裡或呼叫層次結構較高的位置進行錯誤處理
經驗法則:
async函數只是傳回一個Promise物件的函數。
只有在Promise被解析(使用await或.then())時才會傳回實際資料