【发布时间】:2016-06-27 20:31:51
【问题描述】:
我有以下js代码。
var a = new Rx.BehaviorSubject(1);
var b = new Rx.BehaviorSubject(2);
var c = new Rx.BehaviorSubject(3);
var total = Rx.Observable.zip(a,b,c, d3.sum);
var observer1 = Rx.Observer.create(
function (x) {
console.log('this is an oberservation from A: ' + x);
}
);
var observer2 = Rx.Observer.create(
function (x) {
console.log('this is an oberservation from TOTAL: ' + x);
}
);
var subscription1 = a.subscribe(observer1)
var subscription2 = total.subscribe(observer2)
a.onNext(5)
目标是当a 更新时,total 更新并且我们可以看到打印在observer2 中的结果。但是,当我运行它时的输出是:
this is an oberservation from A: 1
this is an oberservation from TOTAL: 0
this is an oberservation from A: 5
为什么我没有看到一个新的总数,为什么最初的总数是错误的?
编辑
当我将d3.sum 替换为function(a,b,c){return a + b + c} 作为reducer 函数时,至少初始TOTAL 分数是正确的。我不知道这是否是相关问题,但如果是,我想知道出了什么问题。
【问题讨论】: