我有merge
操作取决于两个异步操作的结果。第一种是网络操作,第二种是位置授权的成功或失败。我不关心这些操作的值,只是两者都已完成。
这就是它的样子:
RACSignal *networkCallReturned = [[[NSNotificationCenter defaultCenter] rac_addObserverForName:kNetworkCallReturned object:nil] take:1];
RACSignal *locationPermission = [[[NSNotificationCenter defaultCenter] rac_addObserverForName:kLocationManagerGotLocationPermission object:nil] take:1];
@weakify(self);
[[RACSignal merge:@[ networkCallReturned, locationPermission ]
subscribeCompleted:^{
@strongify(self);
// Do something else here
}];
我遇到的问题是,当我没有可访问性时,不会进行网络呼叫。这不是我可以改变的东西。如果我没有可达性,我怎样才能有条件地发出networkCallReturned
信号?
我是否必须设置另一个监视可达性的信号,然后获取从networkCallReturned
发送的第一个值或可达性信号?
答案 0 :(得分:2)
你可以监控可达性,但它充满了种族和边缘情况。通过捕获无法完成网络呼叫或超时网络呼叫的错误,您似乎可以获得更好的服务。