11

我正在尝试轮询 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));
   });

但是我的 Typescript 转译器返回此错误:

'Observable<number>' 类型上不存在属性 'flatMapLatest'

我正在使用 RxJS 5.0.0-beta.0

如果我使用merge而不是flatMapLatest它根本不会调用 API。

4

2 回答 2

8

你需要使用switchMap()flatMapLatest()在 RxJS 5 中没有。

请参阅从 RxJS 4 迁移到 5 ......虽然文档不是很清楚switchMap()......

通过将您提供的函数应用于返回 Observable 的源 Observable 发射的每个项目,然后发射这些 Observable 中最近发射的项目,从而返回一个新的 Observable。

于 2016-01-26T09:14:42.313 回答
2

更多地解释@Sasxa 的答案。

图中的 SwitchMap。(来自http://reactivex.io/documentation/operators.html

在此处输入图像描述

于 2016-06-28T14:43:58.853 回答