169 похожих чатов

Не судите строго, но как правильно обработать ошибку в потоке

- чтобы основной поток не падал при повторе:

this.saveFeature$
.pipe(
switchMap((feature) => {
const projection = feature.get('panoramaCard')
? {
dataProjection: this.configService.config.outerProjection,
featureProjection: this.configService.config.innerProjection,
}
: null;

let geojson = new GeoJSON().writeFeatureObject(feature, projection);

if (extendedData?.image) {
const cached =
this.inventoryObjectService.objectsService.cachedImages.get(
extendedData.image
);
const image = cached
? of(cached)
: this.getImage(extendedData.image);

return from(image).pipe(
concatMap((blob: Blob) =>
this.saveImage(blob).pipe(
catchError((error) => {
return throwError(() => error);
})
)
),
map((filename: string) => {
return geojson;
}),
catchError((error) => {
return throwError(() => error);
})
);
}
return of(geojson);
}),
switchMap((geojson) => {
return
);
}),
catchError((error) => {
return throwError(() => error);
})
)
.subscribe({});

Падает тут:

return from(image).pipe(
concatMap((blob: Blob) =>
this.saveImage(blob).pipe(
catchError((error) => {
return throwError(() => error);
})
)
),

5 ответов

3 просмотра

чтобы при ошибке не упало, нужно в catchError вернуть observable

Oleh-P Автор вопроса
Aleksey Solokhin
чтобы при ошибке не упало, нужно в catchError верн...

так и сделал . падает тут и потом попадает в ветку error: return from(image).pipe( concatMap((blob: Blob) => this.saveImage(blob).pipe( catchError((error) => { return throwError(() => error); }) ) ),

Oleh P
так и сделал . падает тут и потом попадает в ветку...

вам надо кэтч поставить после saveImage, а не в общем потоке. ну и возврат ошибки генерирует ошибку снова же, получается вы поставили бессмысленный кэтч а вернуть можно NEVER, подписка на него не сработает

Oleh-P Автор вопроса
xxtux Shvets
вам надо кэтч поставить после saveImage, а не в об...

после save соля - он как раз такие не работал - пропускал дальше и ломал поток

Oleh-P Автор вопроса

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Почему стало ломаться на D11? "739002.86400000' is not a valid timestamp" function IncDateTime(aStamp:TTimeStamp;aKind:TTriggerKind;aInterval:Integer):TDateTime; //aStamp = 2...
Катерина Свиридова
8
Привет всем. Подскажите где можно посмотреть, какая версия электрон, поддерживает версии windows? Некий changelog. Мне бы желательно, поддержку 7,8,10... latest, как понимаю и...
Anonym Squad
21
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Есть ли смысл устраиваться на 1с ? Даст это плюс в дальнейшем трудоустройстве на php? Просто у меня в городе вакансий на пхп нету. Или лучше удаленно искать. Опыта работы нету...
Azamat
14
а где есть mysql cloud кроме яндекс-клауд?
Oleg Nosov
13
hi im a cs student. i need some advice from people who have enough experience in Embedded Software. I need to know whether this profession is suitable for me. I have watched s...
Sahand 🏔️
8
Не ну фпц - это уже просто троллинг какой-то. Элементарный код нельзя собрать. ЧЯДНТ? program Project1; {$mode delphi} uses SysUtils, Classes, Generics.Collections; var...
Peter
4
вот что получается в интерпрететоре, работает и результаты выгляд разумными, но то как выглядит код мне не нравиться, а понять куда двигаться не очень могу, если кому не лень ...
Fedor
42
Карта сайта