angular rx js mergeMap / flatMap вместо нескольких каналов / подписки - PullRequest
0 голосов
/ 25 марта 2020

Ниже приведен пример кода. Покажите мне, пожалуйста, пример того, как этот код можно улучшить с помощью таких функций, как mergeMap / объединить наблюдаемые.

ngOnInit() {
this.route.params
  .pipe(takeUntil(this.destroy$))
  .subscribe((params: any) => {
    this.getRound(params.id)
      .pipe(takeUntil(this.destroy$))
      .subscribe((round: any) => {
        this.round = round;
        this.getStats(params.id, round.required_tickets)
          .pipe(takeUntil(this.destroy$))
          .subscribe((stats: any) => {
            this.stats = stats;
          });
      });
  });

}

1 Ответ

2 голосов
/ 25 марта 2020

Вы можете попробовать код ниже

ngOnInit() {
    this.route.params
        .pipe(
            takeUntil(this.destroy$),
            switchMap((params: any) => {
                this.params = params
                return this.getRound(params.id)
            }),
            switchMap((round: any) => {
                this.round = round;
                return this.getStats(this.params.id, round.required_tickets)
            })
        )
        .subscribe((stats: any) => {
            this.stats = stats;
        });
}

Плюс, я бы определенно не использовал в качестве типов

...