Ios ReactiveCocoa:如何防止RACSignal并行执行两次?
在我的应用程序中,我使用ReactiveCocoa和AFNetworking扩展进行API调用。 对于每个API端点,我都有一个启动API请求并返回RACSignal的方法 通过API调用的结果,我填充了大部分UITableView 存在多个事件,导致每个API请求重新加载/刷新视图:Ios ReactiveCocoa:如何防止RACSignal并行执行两次?,ios,afnetworking,reactive-cocoa,Ios,Afnetworking,Reactive Cocoa,在我的应用程序中,我使用ReactiveCocoa和AFNetworking扩展进行API调用。 对于每个API端点,我都有一个启动API请求并返回RACSignal的方法 通过API调用的结果,我填充了大部分UITableView 存在多个事件,导致每个API请求重新加载/刷新视图: 在应用程序启动时 视图显示在每个选项卡中 当用户使用PullToRefresh时 当应用程序自行决定随时获取新数据时 如何防止在当前执行的对同一端点的请求完成之前执行新的API请求 我知道,我可以使用“节流”
- 在应用程序启动时
- 视图显示在每个选项卡中
- 当用户使用PullToRefresh时
- 当应用程序自行决定随时获取新数据时
但是,在ReactiveCocoa中是否有内置的方法可以替代?因为@Jakub Vanu是您的朋友 您可以使用RAC命令返回一个信号,该信号将网络请求的结果作为下一个事件发送
let apiFetchCommand: RACCommand = RACCommand(signalBlock: { [weak self](object: AnyObject!) -> RACSignal! in
return self.fetchSignal()
})
然后,如果您希望向发送来自该命令的下一个事件的信号,您可以使用RAC命令上的executionSignals
属性
let fetchedResultsSignal: RACSignal = self.apiFetchCommand.executionSignals.switchToLatest()
该信号可用于监听该命令的结果
RACCommands有一个名为allowsConcurrentExecution
的属性,该属性默认为false。这意味着,如果命令返回的信号尚未完成,则该命令将不会触发
然后,要执行该命令,只需调用
self.apiFetchCommand.execute(someObject)
您正在查找
RAC命令
。