J'essaie d'envelopper une API basée sur des événements avec des Observables RXJS, mais je n'arrive pas à trouver comment faire le ménage après une désinscription.
C'est à peu près la façon dont je synchroniserais l'abonnement avec l'Observable et l'API basée sur les événements :
interface SomeEventService{
registerListener(messageName: string, messageContent: Something): Listener;
unregisterListener(listener: Listener);
}
class MyWrapper {
private eventService: SomeEventService;
streamOfSomething$(): Observable<Something> {
return Observable.create((observer: Observer<Something>) => {
// Create a listener, and relay events to the Observable
const listener = this.eventService.registerListener("something", something => {
observer.next(something);
})
// Now what?
})
}
}
Le problème ici est qu'à un moment donné dans le futur, je veux appeler eventService.unregisterListener
par exemple, lorsque le consommateur de streamOfSomething$
se désabonne du flux.
La question : Comment dois-je m'y prendre ? D'après ce que je sais, il n'y a pas d'événement ou de callback que je puisse utiliser dans mon observer
pour exécuter du code après un désabonnement.