组合操作——concat:
// concat:按照执行顺序依次执行,遇错误则终止、先执行发送的内容,最后依次执行完成
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 concat:signalB];
[[signalC subscribeNext:^(id x) {
NSLog(@"subscribeNext:%@",x);
}] dispose];
2021-04-15 10:50:21.334282+0800 xxxxxx[3443:1033829] subscribeNext:1
2021-04-15 10:50:21.334329+0800 xxxxxx[3443:1033829] subscribeNext:2
2021-04-15 10:50:21.334341+0800 xxxxxx[3443:1033829] subscribeNext:4
2021-04-15 10:50:21.334806+0800 xxxxxx[3443:1033829] subscribeNext:11
2021-04-15 10:50:21.334828+0800 xxxxxx[3443:1033829] subscribeNext:22
2021-04-15 10:50:21.334847+0800 xxxxxx[3443:1033829] -[NSError init] called; this results in an invalid NSError instance. It will raise an exception in a future release. Please call errorWithDomain:code:userInfo: or initWithDomain:code:userInfo:. This message shown only once.
2021-04-15 10:50:21.334914+0800 xxxxxx[3443:1033829] signalB完成
2021-04-15 10:50:21.334931+0800 xxxxxx[3443:1033829] signalA完成
网友评论