2016-11-21 45 views
0

这里是问题在已经处理资源之后订阅可观察的修改使用.share()

我有一个网络请求,它下载一些信息。然而,这个请求在一段时间内只被调用一次是非常重要的(稍后你会得到这个想法),所有订户都会得到相同的结果。我的第一个想法是使用share()运算符,因此它将在保持单个请求源的同时多播结果。但我不确定会发生什么事情,如果我在共享操作员已经因为refCount下降到0而已经处理资源之后尝试再次订阅它会发生什么事情。

我在此尝试完成的事情是,我做,取决于存储的信息的当前状态,并且这些请求更新这些信息。一旦我发出第一个请求,我需要保留一个引用,并通知每个订阅者,直到请求完成。请求完成后,所有订户都会收到通知并取消订阅...但是,如果处理后有新的订阅,我需要它重复请求,因此会重新订阅使用share

这是类似于简单的share运营商的可能性,还是我需要创建主题并手动控制排放?

回答

1

有一个很好的图书馆RxReplayingShare,我认为这是正确的,你试图达到什么目的。

当至少有一个订阅时,它将相同的结果传递给所有Subscriber。当没有订户时,Observable完成。当再次订阅时,原始Observable被调用。

RxMarble显示它比描述更好。