我有三个信号,我想按顺序评估它们,它们之间有一秒的延迟。
这个片段做了我想要的,但它很丑:
RACSignal *first = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
NSLog(@"First!");
[subscriber sendCompleted];
return nil;
}];
RACSignal *second = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
NSLog(@"Second!");
[subscriber sendCompleted];
return nil;
}];
RACSignal *third = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
NSLog(@"Third!");
[subscriber sendCompleted];
return nil;
}];
NSArray *signals = @[first, [[RACSignal empty] delay:1.0f],
second, [[RACSignal empty] delay:1.0f],
third];
NSLog(@"Starting");
[[[signals rac_sequence].signal concat] subscribeCompleted:^{
NSLog(@"Done!");
}];
它打印出来:
2013-11-18 17:13:35.326 Starting
2013-11-18 17:13:35.327 First!
2013-11-18 17:13:36.328 Second!
2013-11-18 17:13:37.329 Third!
2013-11-18 17:13:37.330 Done!