【问题标题】:rxjs combining BehaviorSubject and Zip Observablesrxjs 结合 BehaviorSubject 和 Zip Observables
【发布时间】: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 分数是正确的。我不知道这是否是相关问题,但如果是,我想知道出了什么问题。

【问题讨论】:

    标签: d3.js rxjs


    【解决方案1】:

    使用时有效

    var total = Rx.Observable.combineLatest(a,b,c, function(a,b,c){return a + b + c})
    

    之前的代码等到abc 在将消息传递给observer2 之前都至少更改了一次。

    另外,请参阅docs

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-12
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多