[英]ReactiveSwift buffered pipe
如何在ReactiveSwift中实现缓冲重播主题?
我查看了SignalProducer
的replayLazily(upTo:)
运算符,以及Signal
类型的pipe()
function,但是我看不到创建等效于 Rx ReplaySubject
的直接方法。
这也带来了以下问题:
ReactiveSwift 使用Signal.pipe()
实现Subject
,但是您不能像为 Rx ReplaySubject一样为 pipe 指定缓冲区。 有什么解决方法吗?
Signal
类型中缺少replayLazily(upTo:)
运算符。 我想这还不错,因为您可以从Signal
创建SignalProducer
。 但是为什么Signal
没有相同的运算符呢?
有没有人遇到过这个问题? 还是我错过了什么?
任何帮助将非常感激。
Signal
文档说:
Signal 的观察者将看到与所有其他观察者完全相同的事件序列。 换句话说,事件将同时发送给所有观察者。
这与生产者不同,生产者每次启动时都会创建一个新信号,这意味着每个观察者都有可能看到不同的事件。
缓冲场景要求每个观察者在订阅时接收缓冲区中的当前值列表,而其他观察者不应在每次添加新观察者时接收这些值。 因此,每个观察者都需要自己的信号,这意味着必须将缓冲机制实现为可以为每个订阅者创建新信号的生产者。
从 2016 年开始有一个很好的讨论,当时添加了replayLazily
,希望能澄清操作员背后的想法以及为什么它绝对不能成为Signal
的一部分。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.