我有一组代表某些服务器的对象。所有这些都应该回答某个Web请求。我需要查询其中一个(其中任何一个)并为此返回RACSignal,但如果失败,我需要转到列表中的下一个。如果我发出一个从数组中获取其中一个的信号试图发出请求,并且如果这个失败捕获自己尝试使用该列表中的另一个?
答案 0 :(得分:0)
检查我的测试示例。我希望它对你有所帮助。
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);
}];