Как использовать код в блоке кода catchError - PullRequest
0 голосов
/ 20 февраля 2019

Я не знаю правильный синтаксис для этого, как мне использовать блок кода в catchError?

this.budgetService.getBudgetDays(this.startDate, this.finishDate)
        .pipe(
          catchError(res => self.budgetTestService.getBudgetDates(self.startDate, self.finishDate))
        )
        .subscribe(res => {
          console.log('Response = ', res);
          self.timelineBudgetDates = self.processDates(res);
          //self.timelineBudgetDates = res;

        });

Так что я хочу использовать что-то вроде этого, где я могу присвоить значениеtimelineDates.

.pipe(
  catchError(self.timelineDates = self.budgetTestService.getBudgetDates(self.startDate, self.finishDate)
  // more code...

  )
)

Ответы [ 3 ]

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

catchError это просто функция

.pipe(
  catchError(error => {
      console.log({error});
     self.timelineDates = self.budgetTestService.getBudgetDates(self.startDate, self.finishDate)
  // more code...but return an observable
 return of('some return value, maybe null, maybe a good default');
    }
  )
)

https://www.learnrxjs.io/operators/error_handling/catch.html

// RxJS v6+
import { throwError, of } from 'rxjs';
import { catchError } from 'rxjs/operators';
//emit error
const source = throwError('This is an error!');
//gracefully handle error, returning observable with error message
const example = source.pipe(catchError(val => of(`I caught: ${val}`)));
//output: 'I caught: This is an error'
const subscribe = example.subscribe(val => console.log(val));
0 голосов
/ 20 февраля 2019

Попробуйте использовать это

.pipe(
 catchError(err => {
  self.timelineDates = self.budgetTestService.getBudgetDates(self.startDate, self.finishDate);
  console.error(err.message);
  console.log("Error is handled");
  return throwError("Error thrown from catchError");
 })
 // more code...
)

Узнайте подробности здесь https://www.concretepage.com/angular/angular-catcherror

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

catchError требуется функция обратного вызова в качестве параметра.

.pipe(
  catchError(() => {
    self.timelineDates = self.budgetTestService.getBudgetDates(self.startDate, self.finishDate
  })
  // more code...
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...