使用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);
答案 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