【发布时间】:2016-09-12 10:22:12
【问题描述】:
我有一个代表一些服务器的对象数组。他们都应该回答某个网络请求。我需要查询其中一个(其中任何一个)并为此返回一个 RACSignal,但如果它失败,我需要转到列表中的下一个。如果我发出一个从数组中获取其中一个的信号尝试发出请求,并且如果失败捕获到它自己尝试与该列表中的另一个尝试,是否可以?
【问题讨论】:
标签: ios reactive-cocoa
我有一个代表一些服务器的对象数组。他们都应该回答某个网络请求。我需要查询其中一个(其中任何一个)并为此返回一个 RACSignal,但如果它失败,我需要转到列表中的下一个。如果我发出一个从数组中获取其中一个的信号尝试发出请求,并且如果失败捕获到它自己尝试与该列表中的另一个尝试,是否可以?
【问题讨论】:
标签: ios reactive-cocoa
检查我的测试示例。我希望它对你有帮助。
RACSignal *signal1 = [RACSignal error:nil];
RACSignal *signal2 = [RACSignal error:nil];
RACSignal *signal3 = [RACSignal error:nil];
RACSignal *signal4 = [RACSignal return:@5];
NSArray<RACSignal *> *signals = @[signal1,
signal2,
signal3,
signal4];
NSMutableArray<RACSignal *> *catchedSignals = [NSMutableArray array];
[signals enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(RACSignal * _Nonnull signal, NSUInteger idx, BOOL * _Nonnull stop) {
RACSignal *catchedSignal = signal;
if (idx != signals.count-1) {
catchedSignal = [signal catchTo:catchedSignals.firstObject];
}
[catchedSignals insertObject:catchedSignal atIndex:0];
}];
[catchedSignals.firstObject subscribeNext:^(id x) {
//print 5
NSLog(@"x = %@", x);
}];
【讨论】: