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 ();
});
}