簡體   English   中英

如何使用可觀察的結果然后返回可觀察的結果

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM