0

Rxjs を使用して、Angular サービスで 4 つのアクションを実行する必要があり、コンポーネントはそのサービス関数を使用します。

-関数「ensureHasCache():Observable」を呼び出します

-関数「create():Observable」を呼び出します

- create() の結果を取得し、ローカル変数を割り当てます (this._companies.push (newEntity);)

-次に、UI で使用するために Observable を返します

これは、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 でわかるように、observable を返す必要がありますが、実際には既に結果を取得しています。したがって、「fromResult」を呼び出す必要があります。しかし、この方法では、実際には必要ない場合でも、新しいobservalbeを作成する必要があります(「fromResult」は新しいObservableを作成します)。

もっとエレガントな方法はありますか?

これは fromResult のコードです:

public static fromResult<T> (result:T):Observable<T>
{
    return new Observable<T> (obs => {
        obs.next (result);
        obs.complete ();
    });
}
4

1 に答える 1

1

doオブザーバブルの演算子を使用して、次のようなことを行います。

public create (data:Company):Observable<Company> {       
  return this.ensureHasCache ().switchMap (res => {
    return super.create (data);
  }).do((newEntity:Company) => {            
    this._companies.push (newEntity);
  });
} 
于 2016-03-26T16:04:53.720 に答える