.pipe(
takeUntil(this.until$),
map((data) => {
const { extendedData, mode } = data || {};
const { image } = extendedData || {};
return { image, mode };
}),
switchMap(({ image, mode }) => {
if (!image) return null;
const url =
mode === 'add' ? image : `${this.base_url}/Image?fileName=${image}`;
return this.objectsService.getImage(url).pipe(
indicate(this.loadingImage$),
catchError(() => of(new Error()))
);
})
)
.pipe(
tap(() => {
if (this.blobstr) URL.revokeObjectURL(this.blobstr);
}),
map((blob: any | Error | null) => {
if (blob instanceof Error || !blob) return null;
this.blobstr = URL.createObjectURL(blob);
return this.sanitizer.bypassSecurityTrustUrl(this.blobstr);
})
);
takeUntil(this.until$), в конец
+ можно все в один pipe()
я бы разбил на части, тут много всего объединено в один пайп, я придерживаюсь принципа - одна подписка - одна цель
спасибо. а как можно хранить последние 2 состояния потока? чтобы сравнивать пред и текущий?
он работает только если будет два события. если один то не пропустит поток дальше
да, можно startWith заюзать
Обсуждают сегодня