如何在buffered replay subject中实现ReactiveSwift?
我研究了SignalProducer
的{{3}}运算符,以及pipe()
类型的Signal
函数,但是我看不到创建的直接方法相当于Rx replayLazily(upTo:)
。
这也带来了以下问题:
ReactiveSwift使用Subject
实现Signal.pipe()
,但是您不能像为Rx ReplaySubject
一样指定管道缓冲区。有任何解决方法吗?
ReplaySubject类型中缺少
replayLazily(upTo:)
运算符。我猜这还不错,因为您可以创建一个Signal
。但是为什么Signal
没有相同的运算符?
以前有人遇到过此问题吗?还是我错过了什么?
任何帮助将不胜感激。
答案 0 :(得分:0)
信号观察者将看到与所有其他观察者完全相同的事件序列。换句话说,事件将同时发送给所有观察者。
与生产者相反,生产者在每次启动时都会创建一个新信号,这意味着每个观察者都有可能看到不同的事件。
缓冲方案要求每个观察者在订阅时都接收缓冲区中的当前值列表,并且其他观察者不应在每次添加新观察者时都接收这些值。因此,每个观察者都需要自己的信号,这意味着缓冲机制必须实现为生产者,它可以为每个用户创建新的信号。
在添加replayLazily
时有一个good discussion from 2016,希望可以澄清操作员背后的想法以及为什么它绝对不能成为Signal
的一部分。