我想通过一个动作从三个不同的URL获取数据,如何实现。我有这样写的动作。
export function listRepos(user) {
return {
type: GET_DATA,
payload: {
request: {
url: `/users/${user}/repos`
}
}
};
}
如何在上述操作中添加axios.all那样的承诺,以便在一个操作中进行三个不同的获取请求
答案 0 :(得分:0)
这可以通过在史诗中间件中观察到的RxJs zip来完成
Actions.js
export function listRepos(user) {
return {
type: GET_DATA,
payload:[
request: {
url: `/users/${user}/repos`
},
request:{
url:`second call`
},
request:{
url:`third call`
}]
}
}
史诗
const cartSummary$ = (actions$, state) => {
return actions$.ofType(Action.CART_SUMMARY)
.flatMap(actions=> Observable.zip(
Api(actions.payload[0].request.url),
Api(actions.payload[1].request.url),
Api(actions.payload[2].request.url))
.map(data=> data[0],data[1],data[2])
)
}
在数据数组中,您可以访问各个api的数据