Когда я делаю GET-запрос с использованием Angular HttpClient, я получаю наблюдаемый результат и обрабатываю его в операторе mergeMap RxJS.
Теперь случается, что снова и снова выбрасывается 404, что я хотел быловить.Наконец, в консоли браузера не должно появляться сообщений об ошибках, и канал должен обрабатываться со следующим значением потока.
Есть ли возможность для этого?Я не справился с этим с помощью catchError ().
Вот упрощенная версия моего кода:
...
this.service1.getSomeStuff().pipe(
mergeMap((someStuff) => {
return from(stuff);
}),
mergeMap((stuff) => {
return this.service2.getMoreStuff(stuff.id); // Here I need some error handling, if 404 occurs
}),
mergeMap((things) => {
return from(things).pipe(
mergeMap((thing) => {
if (allLocations.some(x => x.id === metaData.id)) {
return this.service2.getMore(thing.id, thing.type, thing.img_ref);
}
}),
map((thing) => {
...
ОБНОВЛЕНИЕ: Добавлен подход с catchError ()
Я пробовал таким образом, но ошибка не обнаружена, и следующая таблица слияния не работает (IDE не распознает такой параметр, как thing.id, thing.type, thing.img_ref больше):
...
this.service1.getSomeStuff().pipe(
mergeMap((someStuff) => {
return from(stuff);
}),
mergeMap((stuff) => {
return this.service2.getMoreStuff(stuff.id).pipe(
catchError(val => of(`Error`))
);
}),
mergeMap((things) => {
return from(things).pipe(
mergeMap((thing) => {
if (allLocations.some(x => x.id === metaData.id)) {
return this.service2.getMore(thing.id, thing.type, thing.img_ref);
}
}),
map((thing) => {
...