0

我有一个信号,它基本上是在请求使用 NSRULSession 进行配置。当我执行 subscribeNext 时,它会完美地完成请求,但是第二次不再需要此请求。我怎么能避免呢?

4

3 回答 3

1

每次订阅您的信号时,它都会完成它的工作,除非您采取明确的措施来防止这种情况发生。听起来您在这里想要的是replayLast操作员。此运算符将缓存您的信号的最后发出的值,并在您的信号再次订阅时发出它,而不是重做初始工作。

在此处阅读“重播”运算符:http: //spin.atomicobject.com/2014/06/29/replay-replaylast-replaylazily/

于 2015-10-29T17:33:29.323 回答
0

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

于 2016-09-24T16:46:46.407 回答
0

可以通过take:操作员发出一个时间信号。您只需要传递一个参数来表示执行信号所需的次数。经过这么多的执行后,该网关将完全关闭,并且不会在subscribeNext:块中传递更多数据。在您的情况下,此金额将等于 1。

RACSignal *requestConfigurationSignal = ...
[[requestSignal 
   take:1] 
   subscribeNext:^(id value){
   NSLog(@"Request in progress")
}]
于 2015-10-29T11:21:45.787 回答