首页 > 解决方案 > 如何创建一个消耗另一个可观察函数的可观察函数

问题描述

我需要在角度服务中缓存查找,我将从 web api 获取国家列表并将其存储在变量CountriesbygetCountries中,知道有时我需要将列表Countries发送回调用者

我也需要过滤国家id所以我使用 getCountryByID

我如何返回可观察的getCountriesgetCountryByID

在下面的代码中,返回值是未初始化的列表,当触发下一个时,调用者不会收到新值

Countries: LookupModel[];

 getCountries(): Observable<LookupModel[]> {
    if (!this.Countries || this.Countries.length == 0) {
         this._lookupsClient.lookupsAll('Countries')
          .subscribe(
                    result => {
                    this.Countries = result;
                    return Observable.of(this.Countries);
                              },
                     error => {
                                return <Observable<LookupModel[]>><any>Observable.throw(error);
                               });
            }
  //this is returning only
return Observable.of<LookupModel[]>(this.Countries);
  }

getCountryByID(Id: string): Observable<LookupModel> {

this.getCountries().subscribe(next => {

  let temp = next.filter(y => y.value == Id);
  if (temp && temp.length > 0) {
    return temp[0];
  }
  else { return Observable.of(new LookupModel({ name: Id })); }
}
);

//this is returning only
return Observable.of(new LookupModel({ name: Id }));


 }

标签: angulartypescriptobservable

解决方案


推荐阅读