RxJs объединяют http запрос - PullRequest
0 голосов
/ 15 июня 2019

Я пытаюсь объединить два HTTP-запроса в rxjs, помогите объединить запросы, но параметры (accountId, userId) второго запроса находятся в ответе на первый запрос.

a = http.get<any>(...);
b = http.get<any>(... +  '/' + accountId + '/' + userId})

concat(a, b).subscribe(res => {});

Ответы [ 3 ]

1 голос
/ 15 июня 2019

Вы можете использовать mergeMap, как вы сказали, что accountId и userId находятся в ответе на первый запрос API.

a.pipe(
 mergeMap(data => b(data.accountId,data.userId))
).subscribe(response => console.log(response));

, где вы должны определить b как нечто, возвращающее наблюдаемый

b(accountId userId): Observable<any> {
 return http.get<any>(... +  '/' + accountId + '/' + userId)
}
0 голосов
/ 15 июня 2019

Вы можете просто передать данные через aResponse.

a = http.get<any>(...);
b = http.get<any>(... +  '/' + accountId + '/' + userId})
const getBFromA$ = a.pipe(
    switchMap((aResponse) => {
        const accountId = aResponse.accountId;
        const userId = aResponse.userId;
        return http.get<any>(... +  '/' + accountId + '/' + userId})
    }).subscribe((bResponseOnly) => { // do something if you want to })
0 голосов
/ 15 июня 2019

Вы можете использовать forkJoin для объединения нескольких подписок.

forkJoin([a, b]).subscribe((res) => {
  // res[0] should be the response of `a`
  // res[1] should be the response of `b`
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...