[英]How to use an observable result and then return the observable
使用Rxjs我需要在Angular服務中執行4個操作,然后組件使用該服務功能:
-調用函數“ ensureHasCache():可觀察”
-調用函數“ create():可觀察”
-取得create()的結果並分配一個局部變量(this._companies.push(newEntity);)
-然后返回一個Observable以便在UI上使用它
這是我執行以下4個操作的服務代碼:
public create (data:Company):Observable<Company>
{
return this.ensureHasCache ().switchMap (res => {
return super.create (data);
}).switchMap ((newEntity:Company) => {
this._companies.push (newEntity);
return ObservableUtils.fromResult (newEntity);
});
}
如您在上一個switchMap中所看到的,我需要返回一個可觀察到的,但實際上我已經有了結果。 所以我必須叫“ fromResult”。 但是以這種方式,即使我實際上不需要它,也需要創建一個新的observalbe(“ fromResult”創建一個新的Observable)。
還有更優雅的方法嗎?
這是fromResult的代碼:
public static fromResult<T> (result:T):Observable<T>
{
return new Observable<T> (obs => {
obs.next (result);
obs.complete ();
});
}
我會使用可觀察對象的do
運算符來做類似的do
:
public create (data:Company):Observable<Company> {
return this.ensureHasCache ().switchMap (res => {
return super.create (data);
}).do((newEntity:Company) => {
this._companies.push (newEntity);
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.