2016-01-26 2 views
10

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

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

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 возвращается сообщение об ошибке:

Property 'flatMapLatest' does not exist on type 'Observable<number>'

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

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

ответ

8

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

Migrating from RxJS 4 to 5 См ... Хотя документы не очень понятно, о switchMap() ...

Returns a new Observable by applying a function that you supply to each item emitted by the source Observable that returns an Observable, and then emitting the items emitted by the most recently emitted of these Observables.

+1

Как получить JSON из switchMap? Typcript возвращает эту ошибку: свойство 'json' не существует в типе '{}' – AndreFeijo

+0

Попробуйте переместить 'map()' out и сделать это после 'switchMap()'. Я не использовал его сам, и документы не помогают (; – Sasxa

+5

В случае, если кто-то задается вопросом, как вывести json из switchMap, вам нужно набрать его следующим образом: '.map ((res: Response) => res.json()) '. Убедитесь, что вы импортировали ** Response ** из ** 'angular2/http' ** – AndreFeijo

Смежные вопросы