簡體   English   中英

Angular 2中止可觀察的訂閱序列

[英]Abort observable subscription sequence in Angular 2

我正在嘗試為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;
}

這可能嗎?

謝謝!

您可以退訂 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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM