【发布时间】:2018-02-22 18:12:07
【问题描述】:
我有一个父 observable,一旦它有一个订阅者,它将进行查找并发出一个值,然后完成。
我想将其转换为执行以下操作的可观察对象(或行为主题或任何工作):一旦它至少有一个订阅者,它就会从父可观察对象获得结果(一次)。然后它将该值发送给它的所有订阅者,并在订阅时向所有未来的订阅者发送该值。即使它的订阅者数量下降到零,它也应该继续这种行为。
看起来这应该很容易。以下是无效的:
theValue$: Observable<boolean> = parent$
.take(1)
.share()
其他不起作用的东西:publishReplay()、publish()。效果更好的东西:
theValue$ = new BehaviorSubject<boolean>(false);
parent$
.take(1)
.subscribe( value => theValue$.next(value));
不过,这种方法存在一个问题:parent$ 在theValue$ 获得第一个订阅者之前就被订阅了。
有没有更好的方法来处理这个问题?
【问题讨论】: