Угловой 5 $ http опрос с RXJS - PullRequest
       25

Угловой 5 $ http опрос с RXJS

0 голосов
/ 17 декабря 2018

Я пытаюсь создать службу опроса, и это то, чего я достиг.Цель состоит в том, чтобы иметь опрос, который можно остановить, когда ответ содержит определенное значение (например, running: false)

// Sample call
  _getData(): Observable<any> {
    return new Observable((observer) => {
      setTimeout(() => {
        observer.next({ data: "bar", running: true });
      }, 2000)
    })
  }

  start() {
    timer(0, 5000)
      .pipe(
        concatMap(() => from(this._getData())
        .pipe(map(response => response))
        )
      )
     // .pipe(filter(backendData => backendData.running === true))
      .subscribe(() => console.info("CIAO" + ++calls))
  }

Проблема заключается в том, что это срабатывает один раз.Что я делаю не так?

1 Ответ

0 голосов
/ 17 декабря 2018

Это потому, что concatMap ждет, пока завершится внутренняя наблюдаемая.

В вашем _getData вы возвращаете new Observable, а затем сами вызываете next(), но никогда не вызываете complete(), поэтому наблюдаемое остаетсяоткрыт.Тогда concatMap никогда больше не вызовет свой метод проекта, потому что он ожидает завершения предыдущего Observable.

...