如何使用RxSwift实现事件 Launcher ? (可以发出由订阅它的其他对象使用的数据的对象 . )
在浏览了Rx文档和示例之后,我觉得自己是一个完全白痴,并且仍然非常困惑如何从Observers手动发出事件到Observables . 我的理解是我们有一些Observable可以向所有订阅Observable的观察者发出带有数据的事件 . 但是,我对如何在Swift中实现它没有任何想法 .
这是我正在尝试实现的一个例子:
class VendingMachine {
let dispenser = Observable<Drink>
// Notify all subscribed Observers that this machine dispensed a drink.
func dispenseDrink(item: Drink) {
dispenser.onNext(item)
}
}
第二个文件:
class MachineReporter: Observer {
let dispenser = VendingMachine().dispenser
init() {
dispenser.subscribe(self)
}
onNext { drink in
print("Vending machine dispensed a drink: \(drink)"
}
}
我的大脑是油炸的 . 我现在要切换到像EmitterKit这样的专业库,因为我显然误解了它是如何工作的 .
但我需要弄清楚Rx是如何工作的,否则我会发疯 . 救命!
2 回答
我'm pretty confused about what you'正在计划使用
MachineReporter
,所以我的代码只是解决了它的工作原理,尽管它可能不是很有用 .我强烈建议你通过RxSwift Playground examples并确保你对这些感到满意 . 您的问题特别涉及
Subject
. 这应该让你超过最初的不舒服和沮丧 . 我肯定会听到你的消息,但是,完全值得推过第一道障碍 . 坚持下去 .应该使用
Subject
.http://reactivex.io/documentation/subject.html
我建议在这里开始使用PublishSubject .