我对JS和RxJS不好,所以,如果我的问题很愚蠢,对不起。
我有这个代码;不是我写的:
prepare(): Observable<any> {
const i = of({}).pipe(
// Check if file type is image
filter(() => isImage(this.file)),
switchMap(() => this.generateThumb()),
switchMap(() => this.resizeImage()),
take(1)
);
return i
}
但是我需要第二件事。如果文件类型不是图像:
我该如何实现?谢谢。
编辑:针对AJT_82的评论
我真的不知道这里发生了什么。为什么要先创建一个可观察的对象,对其进行管道传输,对其进行过滤等。
所以我试图使其更简单:
if (isImage(this.file)) {
this.resizeImage();
}
this.generateThumb();
return of(this);
失败。
答案 0 :(得分:3)
我认为您可以使用partition
运算符:
它看起来应该像:
const source = of({});
const [images, notImages] = source.pipe(partition(() => isImage(this.file));
merge(
images.pipe(
switchMap(() => this.resizeImage()),
)
notImages
)
.pipe(switchMap(() => this.generateThumb())),
.subscribe(...);
分区将。让您观察到图像,再观察到noImages
对图像应用resizeImages
,将图像与noImage合并,对合并的可观察对象应用generateThumb