表中調用函數時返回Promise:嘗試並返回一個Promise的函數調用
P粉340264283
P粉340264283 2023-09-05 14:36:01
0
2
532
<p><pre class="brush:php;toolbar:false;">let data = [223, 34, 456, 56, 67]; function getDataFromApi(paramfromTableCell){ let postData = {data : paramfromTableCell} let result = apiResponse(url, 'post', postData).catch((err => console.log(err))) return result; } data.map((value)=>{ return( <th>{getDataFromApi(value)}</th> ) })</pre> <p>在表格單元格中呼叫一個函數,但它會傳回一個Promise。在呼叫函數時,它接受一個參數並根據數字返回名稱,但它會傳回Promise。有沒有辦法解決這個問題? </p>
P粉340264283
P粉340264283

全部回覆(2)
P粉970736384

你必須await這個promise來取得結果。否則你只會得到這個promise。所以在你的map函數中加入async,然後使用await

data.map(async (value)=>{
  return(<th>{await getDataFromApi(value)}</th>
)
P粉832212776

看起來你正在使用React。你需要將你的回應儲存到React的狀態。

這是一個範例程式碼,它應該是這樣的(未經測試):

let data = [223, 34, 456, 56, 67];
const [responses, setResponses]  = useState([]);

useEffect(() => {
   const getAllResponses = () => Promise.all(
       data.map(val =>  getDataFromApi(val))
   );

   getAllResponses().then(responses => setResponses(responses));
}, [data])

function getDataFromApi(paramfromTableCell){
    let postData = {data : paramfromTableCell}
    return apiResponse(url, 'post', postData).catch((err => console.log(err)))
}

responses.map((value)=>{
 return(
       <th>{value}</th>
 )
})
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板