0
我有3個相關信號,我想將它們的值組合到一個對象中。我想出了2個選項。鏈接相關信號並組合它們的值
選項1:
+ (RACSignal *)createObject {
RACSignal *paramsSignal = [[[self class] createObject1] flattenMap:^RACStream *(NSString *object1) {
return [[[self class] createObject2:object1] flattenMap:^RACStream *(NSString *object2) {
return [[[self class] createObject3:object2] flattenMap:^RACStream *(NSString *object3) {
return [RACSignal return:RACTuplePack(object1, object2, object3)];
}];
}];
}];
return [paramsSignal map:^id(RACTuple *tuple) {
return [[CombinedObject alloc] initWithO1: tuple.first O2: tuple.second O3: tuple.third];
}];
}
我不太喜歡所有的嵌套和關閉。
選項2:
+ (RACSignal *)createObject {
RACSignal *paramsSignal = [[[[self class] createObject1] flattenMap:^id(NSManagedObjectModel *object1) {
return [RACSignal combineLatest:@[[RACSignal return:object1], [[self class] createObject2:object1]]];
}] flattenMap:^RACStream *(RACTuple *tuple) {
return [RACSignal combineLatest:@[[RACSignal return:tuple.first], [RACSignal return:tuple.second], [[self class] createObject3:tuple.second]]];
}];
return [paramsSignal map:^id(RACTuple *tuple) {
return [[CombinedObject alloc] initWithO1: tuple.first O2: tuple.second O3: tuple.third];
}];
}
沒有嵌套或關門,而是太多的元組和對象通過每個信號的...
所以我想知道是否有更好的解決方案,我不存在。
謝謝。