Приветствую коллеги-программисты,
У меня есть подписка на наблюдаемую в Angular-компоненте, где я хочу немедленно запустить функцию подписки в первом выпуске, но отменить все последующие, реализованные так:
concat(
inputStream$.pipe(take(1)),
inputStream$.pipe(
skip(1),
debounceTime(500))
).subscribe(val => someFunction(val));
Однако, поскольку inputStream$
поступает от внешней службы, я хочу прекратить подписку на уничтожение компонента.Как обычно, у меня есть локальный destroy$
, который излучает на ngOnDestroy
и собирался сделать обычный takeUntil(this.destroy$)
.
Однако в этом случае меня немного беспокоит вопрос о том, где я должен закончитьподписка.Будет ли это внутри конкатов внутри обеих отдельных труб или внутри самого потока конкатов?Или есть еще один лучший способ сделать это правильно для объединения потоков?
Другими словами, два моих предложения:
Внутри каждого канала:
concat(
inputStream$.pipe(
take(1),
takeUntil(this.destroy$)),
inputStream$.pipe(
skip(1),
debounceTime(500),
takeUntil(this.destroy$))
).subscribe(val => someFunction(val));
На самом Concat-Stream:
concat(
inputStream$.pipe(take(1)),
inputStream$.pipe(
skip(1),
debounceTime(500))
).pipe(
takeUntil(this.destroy$)
).subscribe(val => someFunction(val));
Большое спасибо за любую помощь!