Angular 角度组件调用调用服务的服务:两者都需要对结果进行处理
我不知道这个问题该怎么说 我有一个角度组件,需要调用服务类上的方法。该方法需要通过我自己的http服务调用http方法,然后对结果进行处理 但是组件还需要做一些事情来响应服务调用。所以我有一些类似于以下伪代码的东西: 在组件中:Angular 角度组件调用调用服务的服务:两者都需要对结果进行处理,angular,rxjs,observable,subject,Angular,Rxjs,Observable,Subject,我不知道这个问题该怎么说 我有一个角度组件,需要调用服务类上的方法。该方法需要通过我自己的http服务调用http方法,然后对结果进行处理 但是组件还需要做一些事情来响应服务调用。所以我有一些类似于以下伪代码的东西: 在组件中: public doSomethingInService(payload: any): void { this.myService.doSomething(payload); // I also need to do something with the
public doSomethingInService(payload: any): void {
this.myService.doSomething(payload);
// I also need to do something with the result!
}
在职:
public doSomething(payload: any): void {
this._httpService.doGet(url).subscibe((result) => {
// do something with the result
});
}
好的,现在这个组件永远没有机会做它自己的事情
我尝试过的事情:
公共剂量测量(有效载荷:任何):可观察{
返回此.u httpService.doGet(url);
//我从来没有机会对结果做出反应
}
这可以通过使用并返回服务中的可观察项来完成
服务.ts
public doSomething(payload: any): Observable<TypeHere> {
return this._httpService.doGet(url).pipe(tap((result) => {
// do something with the result
}));
}
public doSomethingInService(payload: any): void {
this.myService.doSomething(payload).subscribe(_ => /* do something */);
}
从 水龙头 透明地执行操作或副作用,如日志记录 如果您希望在将结果返回到组件/订阅服务器之前对其进行转换,则可以改用 旁注
我不确定什么是
doGet
。只要使用get
就可以了。是的,这正是我需要的。非常感谢。现在将读取tap运算符上的值。