Как сделать Rxjs interval в запросе
Service:
import {Injectable} from '@angular/core';
import {HttpClient, HttpHeaders} from '@angular/common/http';
import {Observable} from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class UsersService {
constructor(private httpClient: HttpClient, private cookieStorage: CookieStorageService) {
}
getUsersInfo(accountId: string, userId: string): Observable<any> {
let contentHeader = new HttpHeaders(
{
'Content-Type': 'application/json',
'Authorization': 'token'; }
);
return this.httpClient.get(`foo.com/users, {
headers: contentHeader
});
}
}
ts:
import {interval, of, Subscription, Observable} from 'rxjs';
Message = null;
ngOnInit() {
this.service.getUsersInfo(this.accountId, this.userId)
.pipe(
interval(1000),
).subscribe((res) => {
this.Message = res.body.message
return;
}),
}
Получаю ошибку: Type 'Observable<number>' provides no match for the signature '(source: Observable<any>): Observable<{}>'.
Ответы (1 шт):
Автор решения: Sergey Glazirin
→ Ссылка
Создаем подписку через interval, а потом передаем в поток наш запрос в switchMap()
import {interval, of, Subscription, Observable} from 'rxjs';
message = null;
ngOnInit() {
interval(1000)
.pipe(switchMap(() => this.service.getUsersInfo(this.accountId, this.userId)))
.subscribe((res) => {
this.message = res.body.message;
})
}