RXJS: запрос после ответа - PullRequest
       7

RXJS: запрос после ответа

0 голосов
/ 26 сентября 2019

Я хочу создать наблюдаемую, которая обрабатывает эти:

  1. наблюдаемая
    • http запрос
    • Ответ
    • подождите 5 секунд и выполнитезапрос снова.

Моя текущая функция:

  getData (): Observable<CurrentData> {
    return interval(5000)
      .pipe(
        flatMap(() => "HTTP REQUEST",
        ),
        map(this.extractData, this))
  }

но моя функция не ожидает успешного ответа, моя функция повторяет запрос каждые 5 секунд.

Ответы [ 3 ]

2 голосов
/ 26 сентября 2019

пользователь repeat и timer оператор или repeatWhen

  getData (): Observable<CurrentData> {
   return httpRequest().pipe(map(.....),timer(5000),repeat())
  }



  getData (): Observable<CurrentData> {
   return httpRequest().pipe(map(.....),repeatWhen(()=>timer(5000)))
  }
0 голосов
/ 26 сентября 2019

вы можете использовать оператор выхлопных карт , он будет игнорироваться до тех пор, пока не завершится последний

getData (): Observable<CurrentData> {
return interval(5000)
  .pipe(
    exhaustMap(() => "HTTP REQUEST",
    ),
    map(this.extractData, this))
}
0 голосов
/ 26 сентября 2019

Вы можете попробовать следующее.Сначала создайте BehaviorSubject и Observable в вашей службе

private mySubject: BehaviorSubject<any> = new BehaviorSubject<>(null);
myObservable$: Observable<any> = this.mySubject.asObservable();

Затем создайте функцию, которая будет запускаться один раз, а затем идет в бесконечном цикле.

loop() {
  var that = this;
  this.http.get(myUrl, { headers }).subscribe(
    (data: any) => { 
       this.mySubject.next(data);
       setTimeout(function () {
          that.timeout();
      }, 5000);
  } 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...