0

使用 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,但实际上我已经有了结果。所以我必须调用“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我会使用observables的运算符来做类似的事情:

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 回答