ReactiveCocoa 4:观察一个动作的完成事件
ReactiveCocoa 4: Observing an Action's completed event
我正在观察反应性 cocoa 4 操作,因此我可以在执行操作时 运行 一些代码。
这是我的操作定义:
buttonAction = Action<Bool, Void, NoError>() { value in
return SignalProducer<Void, NoError> { observer, _ in
dataProvider.addNewTestProduct()
observer.sendNext()
observer.sendCompleted()
}
以下是我进行观察的方式:
vm.buttonAction.events.observeCompleted {
print("observed completed")
}
vm.buttonAction.events.observeNext {
print("observed next")
}
Next 事件的观察工作正常。当动作被 UIButton 触发时,打印语句被执行。
但是,我的问题是由于某种原因从未触发对已完成事件的观察。这可能是 ReactiveCocoa 中的错误还是我做错了什么?
谢谢!
我在 ReactiveCocoa github 页面上问过同样的问题并得到了答案(来自@ikesyo)。为了完整起见,我在这里提供答案:
这是有意为之的行为。由于签名是publiclet events:Signal<Event<Output, Error>, NoError>
,可以观察到inner producer的Completed事件如下:
vm.buttonAction.events.observeNext { event in
switch event {
case let .Next(value): ... // A Next event from the inner producer
case .Completed: ... // A Completed event from the inner producer
default: break
}
}
来源:
https://github.com/ReactiveCocoa/ReactiveCocoa/issues/2784
我正在观察反应性 cocoa 4 操作,因此我可以在执行操作时 运行 一些代码。
这是我的操作定义:
buttonAction = Action<Bool, Void, NoError>() { value in
return SignalProducer<Void, NoError> { observer, _ in
dataProvider.addNewTestProduct()
observer.sendNext()
observer.sendCompleted()
}
以下是我进行观察的方式:
vm.buttonAction.events.observeCompleted {
print("observed completed")
}
vm.buttonAction.events.observeNext {
print("observed next")
}
Next 事件的观察工作正常。当动作被 UIButton 触发时,打印语句被执行。
但是,我的问题是由于某种原因从未触发对已完成事件的观察。这可能是 ReactiveCocoa 中的错误还是我做错了什么?
谢谢!
我在 ReactiveCocoa github 页面上问过同样的问题并得到了答案(来自@ikesyo)。为了完整起见,我在这里提供答案:
这是有意为之的行为。由于签名是publiclet events:Signal<Event<Output, Error>, NoError>
,可以观察到inner producer的Completed事件如下:
vm.buttonAction.events.observeNext { event in
switch event {
case let .Next(value): ... // A Next event from the inner producer
case .Completed: ... // A Completed event from the inner producer
default: break
}
}
来源: https://github.com/ReactiveCocoa/ReactiveCocoa/issues/2784