У меня есть AuthHttpService, который расширяет Http. Всякий раз, когда делается запрос, я возвращаю Observable, но я также хотел бы предпринять некоторые действия внутри самого HTTPService. Как я могу это сделать?Как подписаться на наблюдаемый, который должен быть возвращен, но все еще возвращает Observable
, например:
get(url: string) {
this.pendingRequests++;
return this.http.get(this.config.apiUrl + '' + url, { headers: this.getHeaders(this.config.apiUrl + url) })
.subscribe(() => {
if (this.pendingRequests > 0) {
this.pendingRequests--;
}
});
}
Я использую this.pendingRequests > 0
показать загрузки кок. Я хочу передать фактический ответ на любой сервис, называемый authHttp.get(), но я хочу, чтобы authHttp управлял pendingRequests
сам по себе, так как я могу что-то сделать с ним без подписки? Мои службы, которые называют этот метод, жалуются, что Property 'map' does not exist on type 'Subscription'
, что имеет смысл, но я не знаю, как это сделать.
Ошибка возникает, когда служба компонента вызывает AuthHttp.get, ожидая Observable, но вместо этого получает подписку. Мне интересно, есть ли способ подписаться на AuthHttp, но все равно вернуть подписку
Почему не 'let myCall = this.http.get (this.config.apiUrl + '' + url, {headers: this.getHeaders (this.config.apiUrl + url)})', а затем подписаться на 'myCall 'а затем сделать карту и вернуть ее? – silentsod
Вы попробовали 'switchMap'? С помощью 'switchMap' вы можете переключиться с наблюдаемого на другой, и подписчику ничего не нужно. Вы можете увидеть больше здесь https://www.learnrxjs.io/operators/transformation/switchmap.html – vinagreti
@silentsod Это действительно сработало просто отлично .. –