我试图创建一个拦截器'用于AuthHttp服务(angular2-jwt)。我创建了一个扩展AuthHttp并使用它的类。到目前为止似乎工作正常。我现在要做的是,如果服务器响应401代码,则强制在我的应用程序中注销并忽略以下订阅(我不确定这些订阅是否按顺序执行,所以我不知道如果我能提出的问题是可能的。)
由于我只想在这种情况下显示错误,我只需要从此订阅中止队列并忽略进一步的订阅。这是我到目前为止获得get方法的代码:
get(url: string, options?: RequestOptionsArgs): Observable<Response> {
let observable = super.get(url, options);
observable.subscribe(
() => { },
(error: Response) => {
if (error.status === 401) {
// Logout and ignore all other subscriptions
}
}
);
return observable;
}
这可能吗?
谢谢!
答案 0 :(得分:1)
你可以unsubscribe。 subscribe
方法返回Subscription
个对象。您可以使用它来取消订阅:
get(url: string, options?: RequestOptionsArgs): Observable<Response> {
let observable = super.get(url, options);
let subscription = observable.subscribe(
() => { },
(error: Response) => {
if (error.status === 401) {
// Logout and ignore all other subscriptions
subscription.unsubscribe();
}
}
);
return observable;
}