角2轮询RxJS

问题描述 投票:10回答:2

我想查询一个RESTful端点刷新我的即时聊天消息。我知道一个即时聊天会的WebSockets最好的方法,我只是想了解RxJS如何与角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将返回此错误:

属性“flatMapLatest”上类型不存在“可观察<数>”

我使用RxJS 5.0.0-beta.0

如果我使用合并而不是flatMapLatest它不会在所有调用API。

angular typescript rxjs5
2个回答
8
投票

您需要使用switchMap(),有一个在RxJS 5没有flatMapLatest()

Migrating from RxJS 4 to 5 ......虽然文档是不是switchMap()很清楚...

返回运用你提供给由源可观察返回可观察到发射的每一项功能,并射出由最近发出的这些观测值发射的项目一个新的观测。


2
投票

为了解释@Sasxa的回答多一点。

SwitchMap插图。 (从http://reactivex.io/documentation/operators.html

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.