Ошибка тайм-аута при использовании ngrx в Angular - PullRequest
0 голосов
/ 28 января 2020

Я хотел бы обработать ошибку тайм-аута, когда эффект делает запрос Http.

Вот мой эффект

loadSchedulings$ = createEffect(() =>
  this.actions$.pipe(
    ofType(ESchedulesActions.GetSchedulesByDate),
    mergeMap(() =>
      this.apiCallsService.getSchedulings().pipe(
        map(trips => ({ type: ESchedulesActions.GetSchedulesByDateSuccess, payload: trips })),
        catchError(err => {
          console.log(err);
          return EMPTY;
        })
      )
    )
  )
);

Вот мой getSchedulingService

getSchedulings() {
  return this.http.get<ISchedules>(this.urlData).pipe(
    map(data => {
      ...
      return groupByDate;
    }),
    timeout(2500),
    catchError(error => of(`Request timed out`))
  );
}

На самом деле catchError внутри моего эффекта не отслеживается ошибка, однако я отправляю ошибку внутри моей сервисной функции.

Как это сделать с помощью операторов rx js?

1 Ответ

1 голос
/ 28 января 2020

Я вижу это так, что вы поймаете ошибку в вызове getSchedulings () и никогда не будете распространять эту ошибку, вместо этого вы возвращаете новую наблюдаемую ошибку. попробуйте заменить of на throwError:

    catchError(error => throwError(`Request timed out`))

, которая затем будет обработана вашим эффектом

...