angular - 返回 Observable 并以角度订阅
问题描述
我有角度服务并且在设置某些属性时遇到问题(可能是我的理解问题)。
@Injectable()
export class MyService{
hoHa:MyObj = null;
someFunction(): Observable<MyObj>{
return httpClient.get<MyObj[]>('url')
.pipe(
map(response => response[]),
catchError(this.handleError('someFunction', {} as MyObj)
)
}
}
如何在 someFunction GET 响应中设置“hoHa”服务属性?在 angularJs 中,我使用在 $http 中设置“hoHa”获取成功响应。
如果有人调用 someFunction 时已经设置了“hoHa”,我该如何返回?在 angularJs 中,如果属性已设置,我会使用返回 $q.when()
解决方案
您可以使用tap
并且仍然将 observable 返回给调用者,以便可以订阅它。
@Injectable()
export class MyService{
hoHa:MyObj = null;
someFunction(): Observable<MyObj>{
return httpClient.get<MyObj>('url')
.pipe(catchError(this.handleError('someFunction', {} as MyObj), tap(result => this.hoHa = result));
}
}
推荐阅读
- android - Cordova clean 执行失败,Android SDK Platform 27 出现问题
- reactjs - 提交中单个文件更改时的全局与单个文件覆盖阈值
- jquery - 在表中搜索特定 TD
- java - Google Sheets API 批量更新中的数据验证问题
- python - 如何从字符串列表的末尾删除空字符串(仅在末尾)
- r - r 中的 ggpairs:如何 (1) 调整轴值,以及 (2) 将长变量名称拆分为两行(或多行)
- python - 有没有办法 pd.cut 一个标量?
- c++ - 应用程序无法获取命令参数
- mysql - MySQL日期比较查询
- python - Python 指定了几个列表返回类型