Beh*_*imi 24 angular-http-interceptors angular
如您所知,可以在新版本的Angular 4中使用Interceptor.
在我的,我想在某些条件下取消拦截器中的请求.那有可能吗?或者我应该问的是,我应该采取哪种方式?
它也会好的!如果我找到一种方法来重写对请求的一些响应而不是取消它.
RVP*_*RVP 32
我认为你需要做的就是切断拦截器链就是这样简单地返回一个空Observable:
import { EMPTY } from 'rxjs';
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
if (stopThisRequest) {
return EMPTY;
}
return next.handle(request);
}
Run Code Online (Sandbox Code Playgroud)
受@RVP答案的启发,我发现可以使用以下相同的简单方法以错误的方式切断链 Observable.throw()
//...
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
if (stopThisRequestWithError) {
return Observable.throw('Error message');
} else {
return next.handle(req);
}
}
Run Code Online (Sandbox Code Playgroud)
这样可以避免使用未定义的值来实现响应承诺。
这只是RVP答案的一个轻微变体
import { NEVER } from 'rxjs';
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
if (stopThisRequest) {
return NEVER;
}
return next.handle(request);
}
Run Code Online (Sandbox Code Playgroud)
我使用NEVER而不是EMPTY避免在我的订阅(或承诺)中处理未定义的值。
使用NEVER,如果你不想被调用您的订阅回调
| 归档时间: |
|
| 查看次数: |
12068 次 |
| 最近记录: |