Lak*_*tne 4 internet-connection angular-http-interceptors angular
我可以window.navigator.onLine使用HttpInterceptor 来获取连接状态,如下所述,我可以全局访问请求。但是,如何取消HttpInterceptor内部的请求?还是有更好的方法来解决这个问题?
import { Injectable } from '@angular/core';
import {
HttpRequest,
HttpHandler,
HttpEvent,
HttpInterceptor
} from '@angular/common/http';
import { Observable } from 'rxjs/Observable';
@Injectable()
export class InternetInterceptor implements HttpInterceptor {
constructor() { }
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
//check to see if there's internet
if (!window.navigator.onLine) {
return //cancel request
}
//else return the normal request
return next.handle(request);
}
}
Run Code Online (Sandbox Code Playgroud)
您非常接近答案。
import { Injectable } from '@angular/core';
import {
HttpRequest,
HttpHandler,
HttpEvent,
HttpInterceptor
} from '@angular/common/http';
import { Observable } from 'rxjs/Observable';
@Injectable()
export class InternetInterceptor implements HttpInterceptor {
constructor() { }
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
// check to see if there's internet
if (!window.navigator.onLine) {
// if there is no internet, throw a HttpErrorResponse error
// since an error is thrown, the function will terminate here
return Observable.throw(new HttpErrorResponse({ error: 'Internet is required.' }));
} else {
// else return the normal request
return next.handle(request);
}
}
}
Run Code Online (Sandbox Code Playgroud)