有没有办法防止重复的RACSignal订阅者?
现在我已经设法以一种我希望简化的方式解决这个问题。
我收到了信号:
ExampleAPI.ProgressList().signalValue.doCompleted({ () -> Void in
self.titleProgressCallRunning = false
})
当它开始时,我只在titleProgressCallRunning
为假时才订阅:
private func getTitlesProgress() {
if self.titleProgressCallRunning {
return
}
self.titleProgressCallRunning = true
titleProgressSignal.subscribeNextAs({ (titlesProgress:[VDLTitleProgress]) -> () in
self.titlesProgress = titlesProgress
NSNotificationCenter.defaultCenter().postNotificationName(kNotificationTitlesProgressUpdated, object: nil)
})
}
我正在使用Moya,所以请求只运行一次。但如果我调用getTitlesProgress方法两次,subscribeNextAs
块会被触发两次,而不使用布尔值titleProgressCallRunning
。
我正在寻找一个很好的解决方案来防止这种情况发生!
答案 0 :(得分:0)
免责声明:我还没有看到Swift当前的RAC状态。
在objc的当前版本中,您只需使用RACMulticastConnection
来分享订阅者之间的副作用。有关它的更多信息,请参见Design Guidelines。