如何创建使用其他可观察函数的可观察函数

时间:2018-08-07 06:24:36

标签: angular typescript observable

我需要在角度服务中缓存查询, 我将从网络API获取国家列表,并将其存储在变量Countries中,getCountries的位置, 知道有时候我需要将列表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 }));


 }

0 个答案:

没有答案