在Angular 2中中止可观察的订阅序列

时间:2016-11-23 11:27:47

标签: http angular observable subscribe

我试图创建一个拦截器'用于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;
}

这可能吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

你可以unsubscribesubscribe方法返回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;
}