---abcde-----f-------gh-----i----> //Events
我有一个要观察/订阅的“工作队列”。这是要处理的命令对象的数组。新工作通常会突然出现,需要按顺序进行处理(按照收到的顺序,一次一次,直到完全处理)。
我正在使用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的当前beta状态和不完整/更改的文档,我不知道如何在RxJS 5中执行此操作。
更新:此从v4迁移到v5的迁移指南显示了许多已删除的功能,但未说明如何以新方式进行操作。删除的操作的示例:.tap,.control,.flatMapWithMaxConcurrent(重命名)。
flatMap
/mergeMap
-现在需要一个并发参数
tap
-> do
subscribeOnNext
不再存在,因此只需使用subscribe
一个参数即可。
fromPromise
RxJS 5上不存在重载,请defer
改用。
在这里查看更新的jsbin
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句