在响应本机中如何在一项操作中请求多个网址

时间:2018-08-29 04:20:24

标签: reactjs react-native redux

我想通过一个动作从三个不同的URL获取数据,如何实现。我有这样写的动作。

export function listRepos(user) {
  return {
    type: GET_DATA,
    payload: {
      request: {
        url: `/users/${user}/repos`
      }
    }
  };
}

如何在上述操作中添加axios.all那样的承诺,以便在一个操作中进行三个不同的获取请求

1 个答案:

答案 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的数据