0
---abcde-----f-------gh-----i---->  //Events

観察/購読したい「作業キュー」があります。これは、処理するコマンド オブジェクトの配列です。通常、新しい作業項目は一気に到着し、順次処理する必要があります (完全に処理されるまで、受信した順序で一度に 1 つずつ)。

RxJS 5.0.0-beta.6 を使用しています。(他のライブラリによって課されたバージョン)

これは、私が望む動作を示す実際の例ですが、RxJS v4 を使用しています。

問題のメインコードはこれです...

var events$ = Rx.Observable.fromEvent(produceEvent, 'click')
  .timestamp()
  .tap(({timestamp}) => updatePanelAppend(pending, timestamp));

var inProgress$ = events$;

var done$ = inProgress$
  .flatMapWithMaxConcurrent(1, ({timestamp}) => 
                            Rx.Observable.fromPromise(() => {
                              updatePanelAppend(inProgress, timestamp);
                              removeFromPanel(pending, timestamp);
                              return expensiveComputation(getRandomInt(1, 5) * 1000, timestamp)
                           }));

done$.subscribeOnNext((timestamp) => {
  updatePanelAppend(done, timestamp);
  removeFromPanel(inProgress, timestamp);
});

http://jsbin.com/meyife/edit?js,出力

API の現在のベータ版の状態と、ドキュメントが不完全または変更されていることを考えると、RxJS 5 でこれを行う方法がわかりません。

更新: v4 から v5 への移行に関するこの移行ガイドには、削除された多くの機能が示されていますが、新しい方法で行う方法については説明されていません。削除された操作の例: .tap、.managed、.flatMapWithMaxConcurrent (名前が変更されました)。

4

1 に答える 1

2
  • flatMap/mergeMap - 同時実行パラメーターを受け取るようになりました

  • tap->do

  • subscribeOnNextもう存在しないのでsubscribe、単一のパラメーターで使用してください。

  • fromPromiseoverload は RxJS 5 には存在しないため、defer代わりに使用してください。

ここで更新された jsbin を参照してください

于 2016-08-03T16:32:46.710 に答える