11

ライブ チャット メッセージを更新するために RESTful エンドポイントをポーリングしようとしています。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 トランスパイラーは次のエラーを返します。

プロパティ 'flatMapLatest' はタイプ 'Observable<number>' に存在しません

RxJS 5.0.0-beta.0 を使用しています

flatMapLatestの代わりにマージを使用すると、API はまったく呼び出されません。

4

2 に答える 2

8

を使用する必要がありますが、RxJS 5 にswitchMap()はありません。flatMapLatest()

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 に答える