我有一个 RxJS 可观察流,如下所示:
var sub = Observable.create(obs => {
// logic here
return () => {
// call rest service to notify server
};
})
.publish()
.refCount();
当最后一个订阅者取消订阅时,我需要发出 REST 请求。显而易见的选择是将该调用添加到 return
清理函数中 - 但这样您就打破了任何可观察的序列,并且任何错误等都不容易处理。
我可以使用一个 Subject
,在清理函数中将一个值推送到它上面,然后在其他地方观察它,并挂起 REST 调用。
理想情况下,我会做一些事情,比如通过 REST 调用连接到已处理的流(concat
显然不起作用,因为它没有完成)。
有人对处理这个问题的最干净的方法有什么建议吗?上面的所有选项看起来都有点笨拙,我觉得我错过了一些东西。
最佳答案
您可以实现 finally(...)
在您的流中,它会进行清理。
当流完成(错误或完成)时,finally
会自动执行。
注意:当您手动取消订阅并且未在直播中调用complete
时,此操作将不起作用。
关于rxjs - 观察流何时取消订阅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42134817/