我需要在角度服务中缓存查询,
我将从网络API获取国家列表,并将其存储在变量Countries
中,getCountries
的位置,
知道有时候我需要将列表Countries
发送回呼叫者
我还需要按id
过滤国家/地区,因此我正在使用getCountryByID
如何在getCountries
和getCountryByID
中返回可观测值
在下面的代码中,返回值是未初始化的列表,当触发下一个列表时,调用者不会收到新值
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 }));
}