Наилучшая практика обработки запросов на цепочку с использованием реактивного какао


Я новичок в реактивных словах, поэтому, пожалуйста, помогите найти лучшее решение для этого сценария: Я работаю сYoutube API. Я хочу загрузить Видеокатегории, затем получить по одному главному видео для каждой категории, затем загрузить миниатюру для каждого видео, накопить ее в модель и только после этого отправить сигнал в табличное представление для перезагрузки данных. Я запрашиваю такие категории:

[[[TRYoutubeManager manager] rac_GET:@"videoCategories" parameters:parameters] map:^id(id responseObject) {
    TRYoutubeListResponseModel *listModel =
    [MTLJSONAdapter modelOfClass:[TRYoutubeListResponseModel class] fromJSONDictionary:responseObject error:nil];
    listModel.items = [[listModel.items.rac_sequence filter:^BOOL(TRYoutubeVideoCategoryModel *categoryModel) {
      return categoryModel.assignable;

    }] array];
    return listModel;
  }];

Итак, как отправить запрос для каждого listModel.items и затем объединить результат, а затем сигнализировать табличное представление?

1 3

1 ответ:

Хорошо, для всех, кто все еще удивляется. Объяснение более абстрактным способом:

// You get your list ob objects here
[[[Manager getList] flattenMap:^RACStream *(NSArray *yourList) {
  NSMutableArray *listItemsSignals = [NSMutableArray array];
  for (ItemClass *item in yourList) {
    //Something that produces signals
    RACSignal *itemSignal = [item imageSignal];
    [listItemsSignals addObject: itemSignal]
  }

  return [RACSignal combineLatest:listItemsSignals];
}] subscribeNext:^(RACTuple *values) {
  // All your values are here
}];