如何从subscribe“嗅探”数据并仍然返回Observable <response>

时间:2017-01-03 13:54:52

标签: angular

我有角度http的这个子类,它在我的应用程序中需要的地方优雅地注入。问题是:我需要检查一些值,即使它们不是http错误代码,并返回Observable Response。问题是订阅返回订阅。

这个类的目的是透明地处理一些常见的http错误全局(而http错误 - &gt; catch块;或者api错误 - &gt; json字段要在订阅块中检查)。

import {Injectable} from '@angular/core';
import {Http, ConnectionBackend, RequestOptions, RequestOptionsArgs, Request, Response} from '@angular/http';
import {Observable} from 'rxjs/Observable';
import 'rxjs/add/operator/catch';
import 'rxjs/add/observable/throw';

@Injectable()
export class CustomHttpService extends Http {

    constructor(backend: ConnectionBackend, defaultOptions: RequestOptions) {
        super(backend, defaultOptions);
    }

    request(url: string | Request, options?: RequestOptionsArgs): Observable<Response> {
        return super.request(url, options)
            .catch((error: any) => {
                // Do something here, maybe some redirect.
                return Observable.throw(error);
            })
            .subscribe(res => {
                if (res.json().status === 401) {
                    // Do something here, maybe some redirect too.
                }
                return Observable.of(res);
            });
    }

}

我正在阅读rxjs文档,但我仍然对许多概念感到困惑。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

使用TextBox而不是订阅,subscribe是管道的末尾,处理程序,您要修改它。

map()