我有一个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
}];
我遇到的问题是没有可达性时无法进行网络 call 。这也是我不能改变的事情。如果我没有可达性,如何有条件地触发
networkCallReturned
信号?我是否必须设置另一个监视可达性的信号,然后获取
networkCallReturned
或可达性信号发送的第一个值? 最佳答案
您可以监视可达性,但是种族和边缘情况使它臭名昭著。捕获由于无法完成网络通话或超时导致的错误,似乎可以为您提供更好的服务。
关于ios - ReactiveCocoa条件异步信号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23412639/