0
ReactiveXの原理は比較的新しいですが、私はこれまでに学んだことの大ファンです。私はちょっと考えましたが、もっと経験豊かな意見を出したいと思います。連鎖したrxjs観測可能なオペレータ
Observableを返すメソッドがいくつかあります。それぞれが似たような魔法の中にObservableを作り、同じ正確な演算子を連鎖させます。これらの演算子を抽象化して、それぞれのメソッドをこのコードで繰り返す必要はありません。たとえば、これは私が今持っているもの
されています:
public get(endpoint: string, options?: RequestOptions): Observable<any> {
return this.http.get(endpoint, requestOptions)
.map((response: Response) => {
let responseBody = response.json();
return responseBody;
})
.catch((error: Response) => {
let responseError = new ErrorResponse(error.status.toString(), error.json());
return Observable.throw(responseError);
})
.publishReplay()
.refCount()
.share();
}
public put(endpoint: string, body: any, options?: RequestOptions): Observable<any> {
return this.http.put(endpoint, body, requestOptions)
.map((response: Response) => {
let responseBody = response.json();
return responseBody;
})
.catch((error: any) => {
this.logger.logRequestError('PUT', endpoint, error);
return Observable.throw(error);
})
.publishReplay()
.refCount()
.share();
}
私は、マップを利用したいキャッチし、publishReplay、参照カウント、シェア事業者や自分のオペレータに入れて、そのような私がいることだろう
public get(endpoint: string, options?: RequestOptions): Observable<any> {
return this.http.get(endpoint, requestOptions).myOperator();
}
public put(endpoint: string, body: any, options?: RequestOptions): Observable<any> {
return this.http.put(endpoint, body, requestOptions).myOperator();
}
// define myOperator as something like:
.map((response: Response) => {
let responseBody = response.json();
return responseBody;
})
.catch((error: Response) => {
let responseError = new ErrorResponse(error.status.toString(), error.json());
return Observable.throw(responseError);
})
.publishReplay()
.refCount()
.share();
// end definition
マーク、ありがとう。これは実際に私が今やっていることです。私は、http.get()呼び出しの最後に演算子を追加するだけの "反応的な"対処方法があるかどうかはわかりませんでした。 http://www.get()はobservableを返します。 –
あなたのhttp.get()がobservableを返すので、あなたはbind()をスキップすることができます。プロビジョニングを観測可能に変換するより反応的な方法は、 'Rx.Observable.defer(()=> this.http.get(endpoint、requestOptions))' –