首页 > 解决方案 > 返回 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()

标签: angular

解决方案


您可以使用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));

    }
}

推荐阅读