Javascript 我能在“之前捕捉到某些错误吗?”;订阅();在Angular2可以观察到的RXJS中?

Javascript 我能在“之前捕捉到某些错误吗?”;订阅();在Angular2可以观察到的RXJS中?,javascript,angular,rxjs,observable,Javascript,Angular,Rxjs,Observable,基类在允许子类订阅Angular2中的可观察对象之前,是否有可能捕获某些错误 e、 g .catch()是正确的 Observable是惰性的,因此在订阅之前没有错误。不确定您是否指这种“之前”,因此我提到它只是为了确定。单独使用catch没有多大帮助,因为您订阅了客户端代码,并且必须从catch返回可观察的 我将按以下方式实施: Rx.Observable.of(42) .do(v=>{throw new Error('test')}) .catch(Rx.Observable.of(u

基类在允许子类订阅Angular2中的可观察对象之前,是否有可能捕获某些错误

e、 g

.catch()
是正确的


Observable
是惰性的,因此在订阅之前没有错误。不确定您是否指这种“之前”,因此我提到它只是为了确定。

单独使用
catch
没有多大帮助,因为您订阅了客户端代码,并且必须从
catch
返回
可观察的

我将按以下方式实施:

Rx.Observable.of(42)
.do(v=>{throw new Error('test')})
.catch(Rx.Observable.of(undefined))
.filter(v=>{return v !== undefined})
.subscribe(
(e)=>{console.log('next', e)}, 
(e)=>{console.log('error', e)}, 
()=>{console.log('complete')}
);

令人惊叹的。非常感谢。渔获物是否应归还任何东西?Typescript抱怨此设置(即使它确实工作),您可以在
.catch()
中处理此错误,否则
可观察的
将继续执行下一个事件。返回任何东西都是多余的。TypeScript到底是如何抱怨的?“type
(response:any)=>void
的参数不可分配给type
(err:any,source:Observable,capture:Observable)=>Observable
。type
void
不可分配给type
Observable
”。如果我只是在
\u handle401()
返回新的Observable()
,这很酷,但那似乎很臭/知道了。我用我的答案更新了我的问题。
protected _get(url: string, data?: any): Observable<any> {
    return super._get(url, data, this._authorizationHeader)
        .map(response => response.json())
        .catch(response => this._handle401(response));
}

private _handle401(response: Response): Observable<any> {
    try {
        if(response.status === 401) {
            this._router.navigateByUrl('/login');      
            return Observable.throw(response.status);  
        }
    } catch(err) {
        console.warn('AuthenticatedHttpService._handle401');
        console.error(err);
    }

    return Observable.of(response);
}
Rx.Observable.of(42)
.do(v=>{throw new Error('test')})
.catch(Rx.Observable.of(undefined))
.filter(v=>{return v !== undefined})
.subscribe(
(e)=>{console.log('next', e)}, 
(e)=>{console.log('error', e)}, 
()=>{console.log('complete')}
);