使用Rxjs我需要在Angular服务中执行4个操作,然后组件使用该服务函数:
- 调用函数" ensureHasCache():Observable"
- 调用函数" create():Observable"
- 获取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中看到的,我需要返回一个observable但是 实际上我已经有了结果。所以我必须打电话给#34; fromResult&#34;。 但是这样我需要创建一个新的observalbe(&#34; fromResult&#34;创建一个新的Observable) 即使我实际上不需要它。
有更多的elegat方式吗?
这是fromResult的代码:
public static fromResult<T> (result:T):Observable<T>
{
return new Observable<T> (obs => {
obs.next (result);
obs.complete ();
});
}
答案 0 :(得分:1)
我会使用observables的do
运算符执行类似的操作:
public create (data:Company):Observable<Company> {
return this.ensureHasCache ().switchMap (res => {
return super.create (data);
}).do((newEntity:Company) => {
this._companies.push (newEntity);
});
}