Javascript Rxjs只执行一次处理程序
当其中一个是fire,或者两个都是fire,我只需要执行一次处理程序,如何使用rx来执行Javascript Rxjs只执行一次处理程序,javascript,rxjs,Javascript,Rxjs,当其中一个是fire,或者两个都是fire,我只需要执行一次处理程序,如何使用rx来执行 var source1 = Rx.Observable.interval(1000); var source2 = Rx.Observable.interval(1000); var source = Rx.Observable.merge( source1, source2) .subscribe(() => console.log('This needs to run
var source1 = Rx.Observable.interval(1000);
var source2 = Rx.Observable.interval(1000);
var source = Rx.Observable.merge(
source1,
source2)
.subscribe(() => console.log('This needs to run only once and not kill the stream'))
您可以使用多播的选择器功能 可选选择器函数,可根据需要多次使用多播源流,而不会导致对源流的多次订阅。给定源的订阅者将从订阅转发时接收源的所有通知
尝试
.take(1)
。尝试使用.first()
take(1)
,first()
,single()
。看见也可能是forkJoin
,但这取决于您到底想做什么。我不能取1,我需要继续流,如果其中两个同时推送值,则只运行一次处理程序。它将继续流。查看原始流的concat。请试一试。
function factory() {
return new Rx.Subject();
}
source.multicast(factory, function(shared) {
return shared.take(1).do(x=>console.log(x)).concat(shared);
})
.subscribe();