问候程序员,
我在Angular组件中有一个对observable的订阅,我想在第一个发射上立即运行subscribe函数,但是对所有后续反射都去抖动,就像这样实现:
concat(
inputStream$.pipe(take(1)),
inputStream$.pipe(
skip(1),
debounceTime(500))
).subscribe(val => someFunction(val));
但是,由于inputStream$
来自外部服务,因此我希望在销毁组件时结束订阅。像往常一样,我有一个本地destroy$
,它在ngOnDestroy
上发出并且将要执行通常的takeUntil(this.destroy$)
。
但是,在这种情况下,我有点担心应该在哪里终止订阅。它是位于两个单独管道内的concat内,还是位于concat流本身的管道内?还是有另一种更好的方法来正确配置流,以实现此目的?
换句话说,我的两个建议是:
在每个管道内:
concat(
inputStream$.pipe(
take(1),
takeUntil(this.destroy$)),
inputStream$.pipe(
skip(1),
debounceTime(500),
takeUntil(this.destroy$))
).subscribe(val => someFunction(val));
在concat流本身上:
concat(
inputStream$.pipe(take(1)),
inputStream$.pipe(
skip(1),
debounceTime(500))
).pipe(
takeUntil(this.destroy$)
).subscribe(val => someFunction(val));
非常感谢您的帮助!