[英]Rxjs - clean up observable after subscriber unsubscribes
我正在使用一个不支持rxjs的库,只是很好的回调。 我正在尝试将其包装成可观察的形式,但是当有人取消订阅时,我需要内部流来处理自身。
subscribeToQuotes() {
return new Observable(observer => {
const stream = someLibrary.getStream();
stream.onNewData(data => {
observer.next(data);
});
stream.onComplete(() => observer.complete());
const request = stream.begin();
//I need to call request.abort() when subscriber unsubscribes
})
}
我想这样使用:
const onInstrumentChanged = new Subject();
onInstrumentChanged.subscribe(instrument => {
this.subscribeToQuotes(instrument)
.pipe(takeUntil(onInstrumentChanged))
.subscribe(quotes => {
...
})
})
subscriptionToQuotes subscribeToQuotes()
可以被多次调用,而takeUntil()
会删除先前的订阅,但是内部流会不断触发。 我需要在内部调用request.abort()
。
当主题onInstrumentChanged
触发时,如何调用request.abort()
?
可以在不将主题传递给函数的情况下完成此操作吗?
好的,找到答案了。 observer.add()
允许您在订户退订时添加拆卸功能。 因此,在我的情况下,这可行:
return new Observable(observer => {
const stream = someLibrary.getStream();
const request = stream.begin();
observer.add(() => request.abort());
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.