使用RACSignal防止重复订阅者

时间:2015-04-03 07:44:59

标签: swift reactive-cocoa racsignal

有没有办法防止重复的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

我正在寻找一个很好的解决方案来防止这种情况发生!

1 个答案:

答案 0 :(得分:0)

免责声明:我还没有看到Swift当前的RAC状态。

在objc的当前版本中,您只需使用RACMulticastConnection来分享订阅者之间的副作用。有关它的更多信息,请参见Design Guidelines