Подтвердить что ты не робот

Angular 2 опроса с RxJS

Я пытаюсь опросить конечную точку RESTful, чтобы обновить мои сообщения в чате. Я знаю, что лучший подход для чата - это Websockets, я просто пытаюсь понять, как работает RxJS с Angular 2.

Я хочу проверять новые сообщения каждую секунду. У меня есть следующий код:

return Rx.Observable
   .interval(1000)
   .flatMapLatest(() => this.http.get(`${AppSettings.API_ENDPOINT}/messages`))
   .map(response => response.json())
   .map((messages: Object[]) => {
      return messages.map(message => this.parseData(message));
   });

Однако мой transpiler Typescript возвращает эту ошибку:

Свойство 'flatMapLatest' не существует в типе 'Observable <number> '

Я использую RxJS 5.0.0-beta.0

Если я использую merge вместо flatMapLatest, он вообще не вызывает API.

4b9b3361

Ответ 1

Вам нужно использовать switchMap(), там нет flatMapLatest() в RxJS 5.

См. Миграция с RxJS 4 до 5... Хотя документы не очень понятны о switchMap()...

Возвращает новый Observable, применяя функцию, которую вы поставляете к каждому элементу, испускаемому источником Observable, который возвращает Observable, а затем испускает элементы, испускаемые последними из этих наблюдаемых.