您好我正在嘗試從另一個函式呼叫資料。呼叫者函式是這樣的,
useEffect(() => {
setFetching(true);
const fetchMarketData = async () => {
const marketData = await getMarketData(page);
if (page === 1) {
setData(marketData);
return setFilteredData(marketData);
} else {
setFilteredData(data.concat(marketData));
return setData(data.concat(marketData));
}
};
fetchMarketData();
if (data != undefined) {
if (data.length > 0) setFetching(true);
} else {
}
setFetching(false);
}, [page]);
當我記錄市場資料時,它回傳未定義。但是在這些函式中,直到回傳它會給出正確的結果。
const formatMarketData = (data) =>{
let formattedData = [];
data.forEach(item=>{
const formattedItem = {
...item
}
formattedData.push(formattedItem);
});
return formattedData;
}
export const getMarketData = async (page) =>{
const sending = {"page" : page,};
const response = await fetch("https://us-central1-cnhtest-38661.cloudfunctions.net/getMarketDatas",{
headers: {"Content-Type":"application/json"},
method:"POST",
body:JSON.stringify({data:sending})
}).then((res)=>{
res.json().then((r)=>{
return formatMarketData(r.result.data)
})
})
}
如何正確將此值回傳給呼叫者函式的 marketData 變數?
uj5u.com熱心網友回復:
你忘return了第一個內部promise chain。你需要改變
.then((res)=> {
res.json().then((r)=> {
return formatMarketData(r.result.data)
})
})
到以下。
.then((res)=> {
return res.json().then((r)=> {
return formatMarketData(r.result.data)
})
})
這是一個更新的代碼片段。
const formatMarketData = (data) => {
let formattedData = [];
data.forEach(item => {
const formattedItem = {
...item
}
formattedData.push(formattedItem);
});
return formattedData;
}
const getMarketData = async (page) => {
const sending = {"page" : page};
const response = await fetch("https://us-central1-cnhtest-38661.cloudfunctions.net/getMarketDatas", {
headers: {"Content-Type":"application/json"},
method: "POST",
body: JSON.stringify({data:sending})}).then((res)=> {
return res.json().then((r)=>{
return formatMarketData(r.result.data)
})
})
return response
}
async function printResult() {
const result = await getMarketData(1)
console.log(result)
}
printResult()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/457207.html
標籤:javascript 火力基地 反应式
上一篇:無法執行反應狀態取消rtk查詢
