2015-07-08 2 views
0

Im пытается выполнить параллельную загрузку с реактивным какао, а моя реализация использует буферный метод, который устарел. Как я могу изменить его, не теряя большей ясности в коде?Какова альтернатива устаревшему буферу RACSignal?

Входной сигнал: Массив нагрузок сигналов, которые посылает «следующий» только один раз и завершено/ошибка

Желаемый результат: следовать за предел всего 5 одновременных запросов и отправить следующий только тогда, когда партия 5 запросов загружены не обновите пользовательский интерфейс до частых.

Моя реализация:

RACSignal *concurrentLoadingSignal = [[loadingsSignalsArray rac_sequence].signal flatten:5]; 
RACSignal *finalSignal = [[concurrentLoadingSignal buffer:5] map:^id(id loadingResults) { 
       NSMutableArray *allResults = [NSMutableArray new]; 
       for (NSArray *result in loadingResults) { 
        [allResults addObjectsFromArray:result]; 
       } 
       return allResults; 
      }]; 

ответ

2

Как было предложено в GitHub issue обсуждение устаревания из -buffer: метода, этот подход может работать:

RACSignal* finalSignal = [[[[[concurrentLoadingSignal 
          take:5] 
          collect] 
          map:^id(NSArray* loadingResults) { 
           // do your thing 
          }] 
          repeat] 
          takeUntil:[concurrentLoadingSignal ignoreElements]]; 
Смежные вопросы