繁体   English   中英

Rxjs-清除订阅者退订后的观察结果

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM