组合操作——zipWith、zip:
// 组合操作——zipWith、zip:按照信号执行时间顺序依次进行叠加,列出全部的元素。拉链式结构、元组一一对应。
// 信号一方先结束另一方也跟着结束。
// 注意信号A和信号B的执行顺序
RACSignal *signalA = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
[subscriber sendNext:@1];
[subscriber sendNext:@2];
[subscriber sendNext:@4];
// [subscriber sendError:[NSError new]];
[subscriber sendCompleted];
return [RACDisposable disposableWithBlock:^{
NSLog(@"signalA完成");
}];
}];
RACSignal *signalB = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
[subscriber sendNext:@11];
[subscriber sendNext:@22];
// [subscriber sendError:[NSError new]];
[subscriber sendNext:@44];
[subscriber sendCompleted];
return [RACDisposable disposableWithBlock:^{
NSLog(@"signalB完成");
}];
}];
// RACSignal *signalC = [signalA zipWith:signalB];
// RACSignal *signalC = [RACSignal zip:@[signalA, signalB]];
RACSignal *signalC = [RACSignal zip:RACTuplePack(signalA, signalB)];
[[signalC subscribeNext:^(id x) {
NSLog(@"subscribeNext:%@",x);
}] dispose];
2021-04-15 11:03:34.588688+0800 XXXXXX[3460:1036744] signalA完成
2021-04-15 11:03:34.589752+0800 XXXXXX[3460:1036744] subscribeNext:<RACTuple: 0x170009fa0> (
1,
11
)
2021-04-15 11:03:34.589856+0800 XXXXXX[3460:1036744] subscribeNext:<RACTuple: 0x170009fe0> (
2,
22
)
2021-04-15 11:03:34.589902+0800 XXXXXX[3460:1036744] subscribeNext:<RACTuple: 0x17000a010> (
4,
44
)
2021-04-15 11:03:34.589936+0800 XXXXXX[3460:1036744] signalB完成
网友评论