我刚刚阅读http://blog.thoughtram.io/angular/2016/06/16/cold-vs-hot-observables.html,我试图让publishLast使用一些基本的可观察对象而我不能,有人可以解释为什么吗?
let obs = Observable.create((observer: Observer<number>): void => {
observer.next(234);
})
.publishLast()
.refCount();
obs.subscribe((v: number) => console.log("1st subscriber: " + v));
setTimeout(() => {
obs.subscribe((v: number) => console.log("2nd subscriber: " + v));
}, 1100);
答案 0 :(得分:1)
我假设“刷新”表示您没有收到订阅栏中的任何活动。
问题是publishLast
只有在知道Observable
不会再发出任何值时才能发出,而它唯一可以做到的就是你打complete
Observer
。
所以你的代码需要看起来像这样:
let obs = Observable.create((observer: Observer<number>): void => {
observer.next(234);
observer.complete();
})
.publishLast()
.refCount();
答案 1 :(得分:0)
@ user2555964对于您的用例,将switchMap与distinctUntilChanged组合可能会提供解决方案。看看Angular的文档,他们使用这两个运算符来实现实时搜索框 https://angular.io/tutorial/toh-pt6#herosearchcomponent