我有一个 userService 功能,我订阅了它。如果没有错误,我会获取数据并希望返回它,并有可能让另一个函数订阅它。我已经有一个类似的问题,但是有两个嵌套函数,使用 switchMap 解决了这个问题。但是这里怎么用呢?这样你就可以这样写:
this.authService.getUser(1).subscribe(...
但是这段代码报错了,我自己理解这样是不对的,但是我不明白这里怎么用switchMap或者map:
export class AuthService {
getUser(id: number): Observable<User | null> {
this.httpService.getUser(id).subscribe(
(resultService: DataResponse<User>) => {
if (resultService.status === StatusType.SUCCESSFUL) {
return resultService.data;
} else {
return null;
}
});
}
}
export interface User{
id: number;
name: string;
}
我不仅需要从之前的服务中返回数据,还需要在这里处理接收到的数据,并据此返回不同的数据。在示例中,我为了减少代码而缩短了它,实际上它会更多。为此我只把这个函数放到一个单独的服务中,让组件的代码最少。而如果你只是返回结果,那么所有的逻辑都会进入组件,这个函数最终将毫无意义。