Я пытаюсь обернуть основанный на событиях API с помощью RXJS Observables, но я не могу понять, как убирать за собой после отмены подписки.
Это почти то же самое, что и синхронизацияподписка с помощью Observable и API, основанного на событиях:
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?
})
}
}
Проблема здесь в том, что когда-нибудь в будущем я захочу позвонить на eventService.unregisterListener
, например, когда потребитель streamOfSomething$
откажется от подпискииз потока.
Вопрос: Как мне это сделать?Насколько я могу судить, на моем observer
нет события или обратного вызова, которые я могу использовать для запуска кода после отмены подписки.