Мне интересно, есть ли более элегантный способ обработки этого бита кода
return new Observable(subscriber => {
let subscription = this.anotherObservable().subscribe(
(next) => {
if (this.condition1(next)) {
subscriber.next(next);
} else if (this.condition2(next)) {
subscriber.complete();
} else {
subscriber.error('there was an error');
}
},
(error) => subscriber.error(error),
() => subscriber.complete()
);
return () => subscription.unsubscribe();
});
Этот код находится внутри метода в классе.
Возвращается anotherObservable
Observable, которые испускают данные другого типа, поэтому condition1
и condition2
являются логическими значениями, основанными на значении next
.
Мой вопрос: я пропускаю некоторые комбинации операторов, которые могли бы обрабатывать это Observable с помощьютакое же поведение, но с использованием каналов вместо переписывания "пользовательского" Observable?