RAC的concat组合操作

2021-04-30  本文已影响0人  凯司机

组合操作——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完成

上一篇 下一篇

猜你喜欢

热点阅读