Javascript RxJS可观测时间间隔的多个订阅

Javascript RxJS可观测时间间隔的多个订阅,javascript,reactive-extensions-js,rxjs,Javascript,Reactive Extensions Js,Rxjs,对于RxJS,有没有类似下面这样的解决方案? 另外,我的第一个天真的方法(在《咖啡脚本》中)显然失败了: hObs = Rx.Observable.interval(35000) .startWith(-1) .select(moment().format("D MMMM, HH:mm:ss")) .publish() hObs.subscribe((x)->console.log(x)) hObs.connect() hObs.subscribe((x)-&g

对于RxJS,有没有类似下面这样的解决方案?

另外,我的第一个天真的方法(在《咖啡脚本》中)显然失败了:

hObs = Rx.Observable.interval(35000)
    .startWith(-1)
    .select(moment().format("D MMMM, HH:mm:ss"))
    .publish()

hObs.subscribe((x)->console.log(x))
hObs.connect()
hObs.subscribe((x)->console.log(x, 1))
hObs.connect() 

第二次订阅在35秒的时间间隔内不返回任何内容,依此类推选择
需要的是一个函数,而不是一个值。以下工作:

(function() {
    var list = document.getElementById("list");
    var stream = Rx.Observable.interval(35000)
    .startWith(-1)
    .select(function(){ return moment().format("D MMMM, HH:mm:ss") });

    stream.subscribe(function(value) {
        var li = document.createElement("li");
        li.innerHTML = "subscriber 1: "+value;
        list.appendChild(li); 
    });    
    stream.subscribe(function(value) {
        var li = document.createElement("li");
        li.innerHTML = "subscriber 2: "+value;
        list.appendChild(li); 
    });
})();

请注意,您不需要调用
connect()
两次,通常只调用一次。最好通过调用可观察链末端的
.publish().refCount()
来使用“automatic”
connect()
。这将创建一个可连接的可观察对象,换句话说就是“热可观察对象”(参见)。在这种情况下,我们不需要热观测

在咖啡脚本中:

list = document.getElementById("list")
stream = Rx.Observable.interval(35000)
.startWith(-1)
.select(-> moment().format("D MMMM, HH:mm:ss"))

stream.subscribe((value) ->
    li = document.createElement("li")
    li.innerHTML = "subscriber 1: " + value
    list.appendChild(li)
)
stream.subscribe((value) ->
    li = document.createElement("li")
    li.innerHTML = "subscriber 2: " + value
    list.appendChild(li)
)