我有两个合并后的可观察对象,合并后进行扫描。第一个是简单范围,另一个是主题。每当主题发出一个新值时,onNext
我在扫描中连接该值并将新数组作为累加器返回。如果我处理我的订阅,然后再次订阅,它会重播该范围内的值,但我已经丢失了主题中的值。在下面的代码中,我希望我的第二次订阅的最终值为[1, 2, 3, 4, 5]
最好的方法是什么?现在我有另一个主题,我在其中存储最终值并订阅它,但感觉不对。
这是一个简单的版本,演示了正在发生的事情:
var Rx = require('rx');
var source = Rx.Observable.range(1, 3);
var adder = new Rx.Subject();
var merged = source.merge(adder)
.scan([], function(accum, x) {
return accum.concat(x);
});
var subscription1 = merged.subscribe(function(x) {console.log(x)});
adder.onNext(4);
adder.onNext(5);
subscription1.dispose();
console.log('After Disposal');
var subscription2 = merged.subscribe(function(x) {console.log(x)});
这输出:
[ 1 ]
[ 1, 2 ]
[ 1, 2, 3 ]
[ 1, 2, 3, 4 ]
[ 1, 2, 3, 4, 5 ]
After Disposal
[ 1 ]
[ 1, 2 ]
[ 1, 2, 3 ]