import { Inject, Injectable, InjectionToken } from '@angular/core'; import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http'; import { Observable, from, TimeoutError } from 'rxjs'; import { timeout, tap } from 'rxjs/operators'; import { HttpErrorResponse, HttpResponse } from '@angular/common/http'; @Injectable({ providedIn: 'root' }) export class TimeoutInterceptorService implements HttpInterceptor{ constructor() { } /** * 拦截器拦截请求 */ intercept(req: HttpRequest, next: HttpHandler): Observable> { // 处理请求 return next.handle(req).pipe( // 处理请求的响应 tap( event => { if (event instanceof HttpResponse) { // console.log(event); if (event.status >= 500) { // 服务器错误 } } }, error => { // console.log(error); if (error instanceof TimeoutError) { console.log('服务器连接超时'); } else if (error instanceof HttpErrorResponse) { console.log('网络连接异常'); } // console.log(error.message); // console.log(error.name); } ) ); } }