0
我有這個角度http的子類,它在我的應用程序中需要注入的地方。事情是:我需要檢查一些值,即使它們不是http錯誤代碼,並返回Observable響應。問題是訂閱返回訂閱。如何從訂閱「嗅探」數據並仍然返回一個可觀察的數據<Response>
該類的目的是透明地處理一些常見的http錯誤globaly(而http錯誤 - > catch塊;或api錯誤 - > 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文檔,但我仍對許多概念感到困惑。任何幫助將不勝感激。
非常感謝,男人!就是這樣! –