Вы можете выбросить общую ошибку из вашего потока, если любая из них содержит ошибку, как показано ниже.
const post1$ = this.api.post1();
const post2$ = this.api.post2();
const post3$ = this.api.post3();
const post4$ = this.api.post4();
concat([post1$, post2$, post3$, post4$]).pipe(
switchMap(data => {
if (data.status !== "OK") {
return throwError("Some error");
}
return of(data);
})
).subscribe(res => console.log(res));
ИЛИ: Если вам нужно узнать что-то конкретное о каждой из наблюдаемыхВы можете использовать concat, но перед тем, как попасть в concat, передайте значение через каждую из конечных точек.
const handleResponse = (type: string) =>
(responseObs) => responseObs.pipe(
switchMap(data => {
if (data.status !== "OK") {
return throwError("Some error about " + type);
}
return of(data);
})
);
const post1$ = this.api.post1().pipe(handleResponse("Post 1"));
const post2$ = this.api.post2().pipe(handleResponse("Post 2"));
const post3$ = this.api.post3().pipe(handleResponse("Post 3"));
const post4$ = this.api.post4().pipe(handleResponse("Post 4"));
concat([post1$, post2$, post3$, post4$]).subscribe(res => console.log(res));