2016-09-12 3 views
0

私はいくつかのサーバーを表すオブジェクトの配列を持っています。すべての人が特定のウェブリクエストに答える必要があります。私はそれらのうちの1つ(いずれか1つ)を照会し、そのためのRACSignalを返す必要がありますが、失敗した場合はリストの次のものに行く必要があります。配列からそれらのうちの1つを取得しようとすると、リクエストを作成しようとするシグナルが生成され、それが失敗した場合は、そのリストから別のものを試そうとします。RACSignal自体にキャッチしますか?

答えて

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); 
    }]; 
関連する問題