Rxjs 观察流何时被取消订阅

Rxjs 观察流何时被取消订阅,rxjs,rxjs5,Rxjs,Rxjs5,我有一个RxJS可观察流,我正在共享它,如下所示: var sub = Observable.create(obs => { // logic here return () => { // call rest service to notify server }; }) .publish() .refCount(); 当最后一个订户取消订阅时,我需要发出一个REST请求。显而易见的选择是将该调用添加到returncleanup函数中,但这样

我有一个RxJS可观察流,我正在共享它,如下所示:

var sub = Observable.create(obs => {
    // logic here

    return () => {
        // call rest service to notify server
    };
})
.publish()
.refCount();
当最后一个订户取消订阅时,我需要发出一个REST请求。显而易见的选择是将该调用添加到
return
cleanup函数中,但这样就打破了任何可观察序列,任何错误等都不容易处理

我可以使用一个
主题
,在cleanup函数中将一个值推到它上面,然后在其他地方观察它,REST调用挂起

理想情况下,我会使用REST调用连接到已处理的流(
concat
显然不起作用,因为它没有完成)

有人对最干净的处理方法有什么建议吗?上面的所有选项似乎都有点笨拙,我觉得我错过了一些东西。

您可以在流中实现一个,这样可以进行清理。 当流结束(错误或完成)时,将自动执行
finally


注意:当您手动取消订阅并且不在您的流中调用
complete
时,这将不起作用。

我的用例仅适用于所有订户手动取消订阅时-我不会完成它,如果出现错误,我不需要其余调用。无论哪种方式,最终都与使用我上面所说的没有多大区别。它打破了流模式,在其中进行调用,丢失错误处理等。这意味着您将不断地在流上发送数据,而有订户-正确吗?