0
我想了解如何避免使用标志执行操作后的副作用。在我的代码中,我打开了一个网络连接,之后我设置了代码来定期执行服务器的心跳。当一个请求该连接上发送,我需要重置心脏搏动计时器,这是我的代码看起来是 -反应可可避免在旗帜上观察执行副作用
(RACSignal *) connect: (NSString *) server {
return [[MIConnection connect: server ]
doComplete {
[self setupHeartBeat];
}];
}
-(void) setupHeartBeat {
[[[[[RACObserve (self, heartBeatReset) [email protected](NO)]
map:^RACStream *(id value) {
return [RACSignal interval:7
onScheduler:scheduler withLeeway:5]
startWith:[NSDate date]]
}]
switchToLatest]
flattenMap:^RACStream *(MIConnection * theConnection) {
return [self sendHeartBeat] ;
}]
subscribeNext:^(id x) {
self.heartBeatReset = NO;
NSLog(@"Done with sending heartbeat");
}];
-(RACSignal *) sendRequest: (id) request {
return [[MIConnection sendRequest: request ]
doComplete {
self.heartBeatReset = YES;
}];
}
正如你所看到的,我使用的是标志“heartBeatReset”,复位定时器为心跳发送。什么会是更好的方式来实现上述?谢谢
谢谢!!!这非常有帮助。我将改变我的代码以结合上述内容。 – 2014-12-15 13:59:18