Как сделать 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;
    })
}
→ Ссылка