Да, вы просто делаете это внутри тела подписки.
this.Subscription1 = interval(1000).subscribe(x => {
if(this.seconds != 0) {
this.seconds -= 1
}
});
Альтернатива 1
Вы также можете воссоздать эту функцию внутри трубы.
Хорошо если this.seconds
может когда-либо go вернуться выше 0 и вы хотите, чтобы ваша подписка продолжала получать значения.
this.Subscription1 = interval(1000)
.pipe(
// do not continue if this.seconds <= 0
filter(() => this.seconds > 0)
tap(() => this.seconds -= 1)
)
.subscribe(() => {
// will only receive values if this.seconds > 0
console.log(this.seconds);
});
Альтернатива 2
И если вы хотите закрыть подписку один раз this.seconds
достигает 0, используйте takeUntil
. Теперь (вероятно) нет необходимости хранить ссылку на подписку.
interval(1000)
.pipe(
// stop the subscription once this.seconds reaches 0
takeUntil(() => this.seconds === 0)
tap(() => this.seconds -= 1)
)
.subscribe(() => {
// will only receive values if this.seconds > 0
// won't receive values if this.seconds goes back above 0 after reaching 0
console.log(this.seconds);
});
Бонусный совет
Используйте timer(0, 1000)
, если хотите, чтобы ваша подписка сработала немедленно