То, что у вас есть в ваших подписках, не влияет на источник Observable, поэтому, если вы хотите отменить подписку, вам нужно использовать оператор, который завершает цепочку, или отписаться вручную.
Например, если вы знаете, сколько элементовВы хотите принять, что можете использовать take(N)
или, если это зависит от определенного условия, вы можете использовать takeWhile()
.Или вы можете собирать предметы с помощью scan()
и комбинировать их, например, с takeWhile()
.
Вы также можете отказаться от подписки прямо в своем звонке на подписку:
this.purchases$.subscribe(function(val) {
if (condition) {
this.unsubscribe();
}
});
Обратите внимание, что в этом случае вынельзя использовать функции стрелок () => ...
, потому что RxJS связывает контекст this
с текущим Subscription
объектом.Вот почему вы можете позвонить this.unsubscribe()
и отказаться от подписки (это не хак, он предназначен для использования таким образом).