12

How to detect an error by timeout operator? I would like to show an alert or something like that just when the server doesn't response.

I have a similiar code in my interceptor:

this.http.post('http://localhost:3000/api/core', data)
        .pipe(
            timeout(30000),
            map((response: any) => { // Success...
              return response;
            }),
            catchError((error) => { // Error...
              // Timeout over also handled here
              // I want to return an error for timeout
              return throwError(error || 'Timeout Exception');
            }),
            finalize(() => {
              console.log('Request it is over');
            })
        );

["rxjs": "^6.0.0", "@angular/http": "^6.0.3",]

1
  • 6
    It will throw a TimeoutError which you can look for using instanceof. Commented Nov 10, 2018 at 2:14

2 Answers 2

21

This works

import { throwError, TimeoutError } from 'rxjs';

catchError((error) => { // Error...
   // Handle 'timeout over' error
   if (error instanceof TimeoutError) {
      return throwError('Timeout Exception');
   }

   // Return other errors
   return throwError(error);
})

I implemented this at my intecerptor that has other functionalities, the code here

Sign up to request clarification or add additional context in comments.

4 Comments

The page was not found. Could you upload it again?
Hey. This works for me but I still get the error ERROR Error: Uncaught (in promise): TimeoutError: Timeout has occurred
If you don't want to return a error (you shoud) innstead of "throwError" return "of". And you will can handle in your map, or tap operator
I was returning err instead of caught. Now it's working. Thank you
-4

You can use timeoutWith operator to achieve this.

return this.http.post('http://localhost:3000/api/core', data).pipe(
      timeoutWith(3000, observableThrowError(new Error('Http Timeout exceeds'))),
      map((response: any) => { // Success...
              return response;
      }),
      catchError((error: HttpErrorResponse) => this.handleError(error))
    );

1 Comment

observableThrowError?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.