---abcde-----f-------gh-----i----> //Events
我有一個「工作隊列」,我想觀察/訂閱。這是一個要處理的命令對象的數組。新的作品通常以連發形式出現,並且需要連續處理(按收到的順序逐個處理,直至完全處理)。將RxJS v4代碼轉換爲v5,使用「拉」處理隊列
我正在使用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,output
鑑於API和不完全/改變文檔的當前beta測試階段,我無法弄清楚如何做到這一點在RxJS 5.
更新:這migration guide從v4移動到v5顯示許多功能被刪除,但沒有指示如何做事情的新方式。已刪除操作的示例:.tap,.controlled,.flatMapWithMaxConcurrent(已重命名)。
發問,V4的解決方案來自何處:http://stackoverflow.com/questions/38601451/how-to-process-rxjs-stream-n-items-at-一次性完成項目完成自動填充 –