Javascript 如何组合观测值,但在发生时为每个观测值发出一个值

Javascript 如何组合观测值,但在发生时为每个观测值发出一个值,javascript,angular,rxjs,Javascript,Angular,Rxjs,我想从组合观测值中得到每个发射值。我不需要像CombineTest、forkJoin等操作符所实现的所有结果的最终值 我正在寻找一个操作符,将使下面的代码更短,但保持相同的行为 this.keyPress$.pipe(debounceTime(1000)) .subscribe( (d) => { console.log('keypress'); resetInterval(); } ); this.mouseMove$.pipe(debounceTime(100

我想从组合观测值中得到每个发射值。我不需要像CombineTest、forkJoin等操作符所实现的所有结果的最终值

我正在寻找一个操作符,将使下面的代码更短,但保持相同的行为

this.keyPress$.pipe(debounceTime(1000))
.subscribe(
  (d) => {
    console.log('keypress');
    resetInterval();
  }
);

this.mouseMove$.pipe(debounceTime(1000))
.subscribe(
  (d) => {
    console.log('mouseMove');
  }
);


this.click$.pipe(debounceTime(1000))
.subscribe(
  (d) => {
    console.log('click');
  }
);

有没有一种方法或操作员可以用来实现这一点?

如果我正确理解这个问题,您可以尝试以下方法

k$ = this.keyPress$.pipe(
  debounceTime(1000),
  tasp(() => {
    console.log('keypress');
    resetInterval();
  })

m$ = this.mouseMove$.pipe(
  debounceTime(1000),
  tap(() => console.log('mouseMove'))
  );


c$ = this.click$.pipe(
  debounceTime(1000),
  tap(() => console.log('click'))
  )


merge(k$, m$, c$).subscribe()

它可能不会减少您的代码,但只需要一个明确的订阅,这本身可能是一个优势,因为,例如,如果您需要在某个时间点取消订阅,您只需要处理一个订阅。

CombineRelatest不会给出最终发出的值。我认为CombineTest适合这里CombineTest只有在所有发射都被触发的情况下才会发射,这意味着在CombineTest发射值之前必须发射单击、鼠标移动和按键。谢谢,如果无法减少代码,我可以使用这种方法。我喜欢这样一个事实,即我将只使用
merge