RACSignal并行化

时间:2014-04-11 19:38:13

标签: ios reactive-cocoa

我有以下信号,我想并行化。我很想知道内部的两个信号何时出现"然后"完了。

[[[[RACSignal empty]
        then:^{
            return [RACSignal defer:^{
                NSLog(@"error");
                return [RACSignal error:nil];
            }];
        }]
        then:^{
            return [RACSignal defer:^{
                NSLog(@"result");
                return [RACSignal return:@"1"];
            }];
        }]
        subscribeError:^(NSError *error){
            NSLog(error);
        }
        completed:^{
            NSLog(@"completed");
        }];

尝试这样做,我创建了一个合并两者的信号。 乍一看它起作用但并不等于第一个。

[[[RACSignal empty]
        then:^{
            return [RACSignal merge:@[
                    [RACSignal defer:^{
                        NSLog(@"error");
                        return [RACSignal error:nil];
                    }],
                    [RACSignal defer:^{
                        NSLog(@"result");
                        return [RACSignal return:@"1"];
                    }],
            ]];
        }]
        subscribeError:^(NSError *error){
            NSLog(error);
        }
        completed:^{
            NSLog(@"completed");
        }];

即使出现错误,您也可以看到合并中的所有信号都已经过评估。在我的特殊情况下,这是一个问题,因为信号可能包含副作用。

哪个是并行化两个信号的正确方法,考虑到如果其中一些信号失败,其余信号会自动处理?

0 个答案:

没有答案