Возможно ли (я не могу найти ничего исчерпывающего по этому поводу) объединить несколько конвейерных операторов в одну функцию, чтобы я мог передать ее и повторно использовать в другом методе?
Вот в чем дело:
public ngOnInit(): void {
this.route.url
.pipe(
switchMap( (ids: UrlSegment[]) => /* http call */),
tap(result => /* setting a variable within a service */),
tap(result => /* some more manipulating and logic */),
map(result => /* setting a _this_ variable */)
)
.subscribe( () => {
/* some other async tasks, which depend on _this_ variables */
this.cdr.detectChanges();
});
}
Как мне извлечь все внутри pipe()
, чтобы я мог вызывать ту же цепочку операторов из другого метода, который должен был бы выполнять тот же http-вызов и последующую логику и манипулирование?
Чего я пытаюсь достичь, так это:
this.route.url
.pipe(
this.combinedPipableMethod(url: UrlSegment[])
)
.subscribe()
_this_
) на своей карте. Вы должны создать новые данные на основе данного выброса в файлеmap
. Не выполнять побочные эффекты. Такое ощущение, что код в вашемmap
принадлежит вашему обратному вызовуsubscribe
. - person realappie   schedule 11.11.2019tap
. - person pop   schedule 11.11.2019subscribe
. Не вижу смысла иметь триtap
. Лично я использую толькоtap
для регистрации. - person realappie   schedule 11.11.2019tap
was. На мой взгляд - если это что-то поставить и забыть, то в пределахtap
более разборчиво. Я выбрал этот стиль для проекта, над которым недавно работал, и он мне очень нравится. Вsubscribe
у меня есть дополнительные вызовы функций, которые имеют дело с контекстомthis
, но их нет в другой функции, которая повторно использует этотpipe
, поэтому я бы оставил все как есть. - person pop   schedule 11.11.2019