在已经处理资源后订阅使用 .share() 修改的可观察对象
Subscribing to an observable modified using .share() after it has disposed resources already
问题来了,
我有一个下载一些信息的网络请求。然而,这个请求在一段时间内只被调用一次是很重要的(你稍后会明白)并且所有订阅者都得到相同的结果。我的第一个想法是使用 share()
运算符,这样它会在保持单个请求源的同时多播结果。但是我不确定如果我在共享运营商已经由于 refCount 下降到 0 而处置了资源之后再次尝试订阅它会发生什么。
我在这里试图完成的事情是,我发出的每个请求都取决于存储信息的当前状态,并且这些请求会更新此信息。发出第一个请求后,我需要保留对它的引用并通知每个订阅者,直到请求完成为止。请求完成后,所有订阅者都会收到通知并取消订阅......但是,如果处理后有新订阅,我需要它重复请求,从而重新订阅使用 share
使用简单的 share
运算符是否可以实现类似的功能,或者我是否需要创建一个主题并手动控制发射?
有一个不错的库 RxReplayingShare,我认为它正是您想要实现的目标。
当至少有一个订阅时,它会将相同的结果传递给所有 Subscriber
。当没有订阅者时,Observable
完成。再次订阅时调用原来的Observable
RxMarble 比描述更好。
问题来了,
我有一个下载一些信息的网络请求。然而,这个请求在一段时间内只被调用一次是很重要的(你稍后会明白)并且所有订阅者都得到相同的结果。我的第一个想法是使用 share()
运算符,这样它会在保持单个请求源的同时多播结果。但是我不确定如果我在共享运营商已经由于 refCount 下降到 0 而处置了资源之后再次尝试订阅它会发生什么。
我在这里试图完成的事情是,我发出的每个请求都取决于存储信息的当前状态,并且这些请求会更新此信息。发出第一个请求后,我需要保留对它的引用并通知每个订阅者,直到请求完成为止。请求完成后,所有订阅者都会收到通知并取消订阅......但是,如果处理后有新订阅,我需要它重复请求,从而重新订阅使用 share
使用简单的 share
运算符是否可以实现类似的功能,或者我是否需要创建一个主题并手动控制发射?
有一个不错的库 RxReplayingShare,我认为它正是您想要实现的目标。
当至少有一个订阅时,它会将相同的结果传递给所有 Subscriber
。当没有订阅者时,Observable
完成。再次订阅时调用原来的Observable
RxMarble 比描述更好。