---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 (名前が変更されました)。