Quiero cancelar la suscripción de un observable en un servicio angular una vez que se presente un determinado estado. La cancelación de la suscripción debe ejecutarse dentro de la suscripción. Desafortunadamente, el siguiente código no funciona.
@Injectable() export class CartManagementUsecase { private unsubscribe = new Subject(); public streamSession(): void { this.adapter .streamSession() .pipe(takeUntil(this.unsubscribe)) .subscribe((session) => { if(session.session_state === SessionState.CLOSED) { this.unsubscribe.unsubscribe(); } }); } }Te recomendaría que tomes eventos hasta que se closed . no se requiere tema
public streamSession(): void { this.adapter .streamSession() .pipe(takeWhile(session => session.session_state != SessionState.CLOSED)) .subscribe((session) => { // do something that is required }); }Debe llamar a complete en su tema para takeUntil para cancelar la suscripción al observable.
@Injectable() export class CartManagementUsecase { private unsubscribe = new Subject(); public streamSession(): void { this.adapter .streamSession() .pipe(takeUntil(this.unsubscribe)) .subscribe((session) => { if(session.session_state === SessionState.CLOSED) { this.unsubscribe.complete(); } }); } }