Javascript 如何组合观测值,但在发生时为每个观测值发出一个值
我想从组合观测值中得到每个发射值。我不需要像CombineTest、forkJoin等操作符所实现的所有结果的最终值 我正在寻找一个操作符,将使下面的代码更短,但保持相同的行为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
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