Как подписаться на другой сервис по ошибке без вложения кода - PullRequest
0 голосов
/ 18 февраля 2019

Вот код, который я использую, getBudgetDays не имеет flatMap / mergeMap, даже если я его импортировал.

import { mergeMap, tap, map } from 'rxjs/operators';
import { Observable } from 'rxjs';

Мне нужно подписаться на другой сервис, budgetTestService, когда есть ошибка.Я пытаюсь использовать flatMap, чтобы избежать вложения, но я не уверен, как его использовать.

  this.budgetService.getBudgetDays(this.startDate, this.finishDate)
        .subscribe({
          next(budgetDates) {

          },
          error(error) {
            // not sure but I don't think rxjs should have nested callbacks like this.
            self.budgetTestService.getBudgetDates(self.startDate, self.finishDate)

            .subscribe({
              next(budgetDates) {
              },
              error(error) {}
            });
          }
        });

1 Ответ

0 голосов
/ 18 февраля 2019

Чистый синтаксис будет

this.budgetService.getBudgetDays(this.startDate, this.finishDate).pipe(
  catchError(res => this.budgetTestService.getBudgetDates(this.startDate, this.finishDate)),
).subscribe(res => {
  // res = value of getBudgetDays if no error, or getBudgetDates if there is one
});

Вы используете старый устаревший синтаксис.Теперь все это проходит через конвейерные операторы!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...