为什么 ReactiveSwift 中的 Observer 有 send 方法?



当我看到 ReactiveSwift 的示例代码时,我感到困惑,因为直觉上观察者应该接收事件。为什么Observer被设计为具有send(_:)方法?

// Signal.pipe is a way to manually control a signal. 
// the returned observer can be used to send values to the signal
let (signal, observer) = Signal<Int, Never>.pipe()
observer.send(value: 10)

我同意这在pipe的上下文中有点令人困惑,其中"观察者"通常被认为是输入,而术语"观察者"让您考虑观察信号的输出。

我的想法是,在这两种情况下,即使这些事情非常不同,也会观察到一些东西

在观察信号的上下文中,信号正在向观察者
  • 发送事件,即观察者正在"观察"信号。
  • pipe的上下文中,你的代码正在向观察者发送事件,即观察者正在"观察"你的代码。

希望这可以解释为什么在两种情况下都使用相同的类型。请注意,您可以使用从pipe()返回的观察器直接观察信号:

let someSignal: Signal<Int, Never> = ...
let (signal, observer) = Signal<Int, Never>.pipe()
someSignal.observe(observer)

此代码通过observer将事件从someSignal"管道"signal

相关内容

  • 没有找到相关文章

最新更新