Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Rxjs只执行一次处理程序_Javascript_Rxjs - Fatal编程技术网

Javascript Rxjs只执行一次处理程序

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

当其中一个是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 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();