【发布时间】:2016-03-18 02:56:52
【问题描述】:
我正在使用 ReactiveX/RxJS 版本。
假设我有一个 Rx.ReplaySubject,它每 2 秒发出一个对象,该对象包含一个 id 和一个带有值的数组。我想减少这个值数组并得到它们的总和。
问题是 ReplaySubject 是一个热门的 observable 并且它永远不会完成,至少我不希望它完成,因为我想要每 2 秒该对象值的总和。但是为了使用 reduce 运算符,应该完成 observable。那么,我该怎么做呢?
E.G 不工作代码:
var subject = new Rx.ReplaySubject();
subject.
map(x => x.transactions).
// Reduce never concludes because ReplaySubject instance is not completed
reduce((v1, v2) => v1+v2, 0).
subscribe(function (value) {
console.log(value)
});
setInterval(injectData, 2000);
function injectData () {
subject.next({id: Date.now(), transactions: [
{value: Math.round(Math.random() * 5000)},
{value: Math.round(Math.random() * 5000)},
{value: Math.round(Math.random() * 5000)},
{value: Math.round(Math.random() * 5000)},
{value: Math.round(Math.random() * 5000)}
]});
}
【问题讨论】:
标签: javascript rxjs reactivex