在我的系统中,我有一个源,两个“步骤”将源映射到一个新值,然后是一个将这两个步骤组合起来以创建最终值的总和。这个系统的初始运行按我希望的那样工作,产生一个 3 的总和。
var source = new Rx.BehaviorSubject(0);
var stepOne = source.map(function (value) {
return value + 1;
});
var stepTwo = source.map(function (value) {
return value + 2;
});
var sum = Rx.Observable.combineLatest(
stepOne,
stepTwo,
function (s1, s2) {
console.log('calc sum: ' + (s1 + s2));
return s1 + s2;
}).subscribe(function (sum) {
});
输出:
> calc sum: 3
但是,如果我为 source 输入一个新值,我会得到如下两个结果:
source.onNext(1);
> calc sum: 4
> calc sum: 5
第一个是中间结果……当新的源值通过系统的一部分时,当所有值都完成传播时,我得到最终结果。
所以我的问题是,推荐的配置方法是什么,以便推入源的新值将原子地通过系统并且只生成一个总和结果?
谢谢!