为 Angular 2+ 创建一个装饰器,返回服务 http 调用的最后结果
Posted
技术标签:
【中文标题】为 Angular 2+ 创建一个装饰器,返回服务 http 调用的最后结果【英文标题】:Creating a Decorator for angular 2+ that returns the last result of a service http call 【发布时间】:2019-09-02 01:40:49 【问题描述】:我有一个组件调用这样的服务
this.service.GetCountries()
.subscribe((pCountries: ICountry[]) =>
this.mCountries = pCountries;
);`
我的服务看起来像这样
private countriesCache$ = new ReplaySubject(1);
GetCountries(pForceRefresh?: boolean)
if (!this.countriesCache$.observers.length || pForceRefresh)
this.http.get<ICountry[]>(path + 'GetCountries')
.subscribe(
countries =>
this.countriesCache$.next(countries)
,
error =>
this.countriesCache$.error(error);
// Recreate the Observable as after Error we cannot emit data anymore
this.countriesCache$ = new ReplaySubject(1);
);
return this.countriesCache$;
如您所见,我正在缓存结果并将缓存的数据返回给每个后续请求。
有没有办法可以将此缓存逻辑移动到装饰器中?除了package
,我似乎在网上找不到任何这样的例子【问题讨论】:
【参考方案1】:有一个 npm 包我从未尝试过,但我听说过。
查看github:https://github.com/angelnikolov/ngx-cacheable
安装它:npm install ngx-cacheable
【讨论】:
以上是关于为 Angular 2+ 创建一个装饰器,返回服务 http 调用的最后结果的主要内容,如果未能解决你的问题,请参考以下文章
Angular - 创建通用装饰器包装 @HostListener