我正在嘗試在包含城市的陣列上創建一組每日預測映射。我正在嘗試映射城市陣列,一旦頁面加載,就會為每個城市進行 api 呼叫。我不斷收到一系列 Promise,例如:

收藏頁面組件:
const [dailyForeCast, setDailyForeCast] = useState([]);
const favorites = [
{
Key: '213181',
type: 'City',
},
{
Key: '213121',
type: 'City',
},
];
useEffect(() => {
const fetchData = async () => {
const results = await favorites.map((city) => {
return weatherService.getSingleForeCast(city.Key);
});
setDailyForeCast(results);
};
fetchData();
}, []);
console.log('dailyForest:', dailyForeCast);
使用 api 呼叫服務:
async function getSingleForeCast(value) {
try {
const res = await axios.get(`http://dataservice.accuweather.com/forecasts/v1/daily/1day/${value}`, {
params: {
apikey: API_KEY,
details: true,
metric: true,
},
});
const result = res.data.DailyForecasts;
return result;
} catch {
console.log('cant get single forecast');
}
}
將不勝感激任何幫助,在此先感謝:)
uj5u.com熱心網友回復:
正如布賴恩所說,您實際上并不是在等待承諾,而是在等待地圖功能。
嘗試這樣的事情(未經測驗):
const fetchData = async () => {
const promises = favorites.map((city) => {
return weatherService.getSingleForeCast(city.Key);
});
const results = await Promise.all(promises)
setDailyForeCast(results);
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/480430.html
標籤:javascript 反应 api 异步等待
