rxJs publishLast不会刷新消息

时间:2016-06-16 17:39:18

标签: rxjs observable

我刚刚阅读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);

2 个答案:

答案 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