避免在ReactiveCocoa上重复发出http请求

时间:2015-10-27 00:02:15

标签: ios swift2 reactive-cocoa reactive-cocoa-3

我有一个信号,基本上它所做的是使用NSRULSession请求配置。当我执行subscribeNext时,它完全满足请求,但是第二次不再需要此请求。我怎么能避免它?

3 个答案:

答案 0 :(得分:1)

除非您做一些明确的事情以防止这种情况,否则您的信号将在每次订阅时完成其工作。听起来你想要的是replayLast运算符。此运算符将缓存信号的最后一个发射值,并在再次订阅信号时发出,而不是重做初始工作。

阅读'重播'运营商: http://spin.atomicobject.com/2014/06/29/replay-replaylast-replaylazily/

答案 1 :(得分:0)

可以通过take:运营商发出一次信号。您只需要传递一个参数来执行信号所需的时间。执行此类操作后,此网关将完全关闭,并且subscribeNext:块中不会再传递任何数据。在您的情况下,此金额将等于1.

RACSignal *requestConfigurationSignal = ...
[[requestSignal 
   take:1] 
   subscribeNext:^(id value){
   NSLog(@"Request in progress")
}]

答案 2 :(得分:0)

使用属性和值绑定到该属性的操作。然后根据需要触发操作以刷新属性的值。