如何使用带有 redux observable 的 RxJs 对第一个 HTTP 响应中的每个项目发出请求?

How to make a request for each item in the first HTTP response using RxJs with redux observable?

我有两个微服务(用户和付款),我想获取用户的付款信息。 所以首先我从用户微服务中获取用户 (GET /users/):

[{userId: 1, name: 'john', ...}, {userId: 2, name: 'mark', ...}, {userId: 3, name: 'bob', ...}]

然后我想为每个用户获取付款。我需要向支付微服务发送请求 (GET /payments/userId)

预期结果。-

[
  {userId: 1, name: 'john', ..., payments: [1,2,3]},
  {userId: 2, name: 'mark', ..., payments: [2,3,4]},
  {userId: 3, name: 'bob', ..., payments: [3,4,5]}
]

我有这个代码来获取用户。

const fetchUsersEpic = action$ =>
  action$.ofType(FETCH_USERS).flatMap(action =>
    Observable.concat(
      Observable.of(actions.loading(true)),
      Observable.fromPromise(usersService.getUsers())
        .flatMap(response =>

          //I need to fetch payments for each user first              

          Observable.concat(
            Observable.of(actions.loading(false)),
            Observable.of(actions.fetchUsersFulfilled(response)),
          ))
        .catch(error => Observable.of(actions.loading(false))),
    ));

您的服务return 一个承诺?你可以这样试试

这样试试:

users = await usersService.getUsers();
users = users.map(user => ({
  ...user,
  payments: await paymentsService.getPayments(user.userId),
}));