我有两个可观察者
clients$
是客户端连接流
data$
是一个无休止地传递数据的流
每当客户端连接时,我都会订阅data$
并将其发送给客户端。
我读到嵌套订阅在RxJS中是不行的,所以这种方法可能是错误的。
const clients$ = createClientStream()
const data$ = Observable.interval(1000).share()
clients$.subscribe(c => {
const s = data$.subscribe(d => c.send(d))
c.on('disconnect', () => s.unsubscribe())
})
对此有什么惯用的RxJS方法?
答案 0 :(得分:2)
您可以使用flatMap
。
const clients$ = createClientStream()
const data$ = Observable.interval(1000).share()
clients$
.flatMap(c => {
const disconnect$ = Rx.Observable.create (observer => {
c.on('disconnect', () => {observer.onNext({}); observer.onCompleted();})
})
return data$.takeUntil(disconnect$)
}, (c,d) => c.send(d))