我有以下信号,我想并行化。我很想知道内部的两个信号何时出现"然后"完了。
[[[[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");
}];
即使出现错误,您也可以看到合并中的所有信号都已经过评估。在我的特殊情况下,这是一个问题,因为信号可能包含副作用。
哪个是并行化两个信号的正确方法,考虑到如果其中一些信号失败,其余信号会自动处理?