我有一个发送不同请求的 get 方法,并且我想为我发送的任何请求分派(dispatch)一个操作。
查看相关代码
export function getTeamsStats(league, team, type) {
return function(dispatch) {
let url1 = "https://www.api-football.com/demo/api/v2/statistics/891/490/2020-01-09"
let url2 = "https://www.api-football.com/demo/api/v2/statistics/891/490/2020-02-09"
let url3 = "https://www.api-football.com/demo/api/v2/statistics/891/490/2020-03-09"
let urlArray = [url1,url2,url3]
let promiseArray = urlArray.map(url => axios.get(url));
const api = true;
if (api) {
return axios({
method: "get",
headers: {
"x-rapidapi-host": "api-football-v1.p.rapidapi.com",
"x-rapidapi-key": ""
}
})
.all(promiseArray)
.then(res => {
const {
matchsPlayed: { home: teamsMatchsPlayedHome, away: teamsMatchsPlayedAway},
wins: { home: teamsStatsWinHome, away: teamsStatsWinAway },
draws: { home: teamsStatsDrawHome, away: teamsStatsDrawAway },
loses: { home: teamsStatsLoseHome, away: teamsStatsLoseAway }
} = res.data.api.statistics.matchs;
const teamStats = {
teamsMatchsPlayedHome,
teamsMatchsPlayedAway,
teamsStatsWinHome,
teamsStatsWinAway,
teamsStatsDrawHome,
teamsStatsDrawAway,
teamsStatsLoseHome,
teamsStatsLoseAway
}
dispatch(receivedTeamsStat(teamStats, type));
对于这 3 个网址中的任何一个,我想执行此调度 dispatch(receivedTeamsStat(teamStats, type));
我只需一个 url 请求即可完成相同的 dispatch
操作并获取状态,但现在我不知道如何在 dispatch
中实现相同的效果对于每个网址。
最佳答案
这个逻辑可能对你有帮助。您可以在 .then()
forEach
.then( res => res.forEach( result => dispatch({type: FETCH_DATA_SUCESS, payload: result.data}))
内部:
...
if (api) {
return axios({
method: "get",
headers: {
"x-rapidapi-host": "api-football-v1.p.rapidapi.com",
"x-rapidapi-key": ""
}
})
.all(promiseArray)
.then( res => {
...
res.forEach( result => dispatch({type: FETCH_DATA_SUCESS, payload: result.data}))
...
})
...
关于javascript - 使用多个 axios 请求分派(dispatch)不同的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61154849/