rxjs5在订阅时获得最后一次发布的值

时间:2016-05-06 11:44:07

标签: rxjs5

使用rxjs 5,我想订阅一个observable并以最后一个发射值开始流。操作员'.cache'应该是为此构建的(我认为),但我无法让它工作。我做了一个小测试,在那里发射了一个可观察的(通过点击一个按钮)然后在3秒后订阅它。理论上,我应该在订阅时获得点击发射,但我没有。

https://github.com/ReactiveX/RxJS/commit/4308a04

http://codepen.io/BradLee/pen/VaqreL

let btn = document.querySelector(`btn`),
    btn$ = Rx.Observable.fromEvent(btn, `click`)
             .cache(1);

setTimeout(() => { 
    btn$.subscribe(evt => console.log('fired') );
}, 3000);

1 个答案:

答案 0 :(得分:1)

问题与RxJS无关。如果更改,则查询选择器不正确:

onLeftIconButtonClick={this.handleToggle}

let btn = document.querySelector(`btn`),

有效。

修改

在至少有一个let btn = document.querySelector('button') 订阅之前,它不会发出任何事件。 如果您需要在cache发生之前接收事件,则需要创建即时订阅,以便您可以开始接收事件。

subscribe

或者您需要使用let btn = document.querySelector(`btn`), btn$ = Rx.Observable.fromEvent(btn, `click`) .cache(1); btn$.subscribe(); 运算符并改为连接:

publishReplay