Наилучшая практика обработки запросов на цепочку с использованием реактивного какао
Я новичок в реактивных словах, поэтому, пожалуйста, помогите найти лучшее решение для этого сценария: Я работаю с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 ответ:
Хорошо, для всех, кто все еще удивляется. Объяснение более абстрактным способом:
// 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 }];