引入ReactiveCocoa,cocoaPods上有ReactiveCocoa这个类。这里pod的安装和install就不多说了。注意的是,如果install一直在等待,那就是被墙了,使用pod install --verbose --no-repo-update这条命令。
RACSignal *signal1 = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
dispatch_async(dispatch_get_global_queue(0, 0), ^{
[NSThread sleepForTimeInterval:2];
NSLog(@"1");
[subscriber sendNext:@"1"];
[subscriber sendCompleted];
});
return nil;
}];
RACSignal *signal2 = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
dispatch_async(dispatch_get_global_queue(0, 0), ^{
[NSThread sleepForTimeInterval:3];
NSLog(@"2");
[subscriber sendNext:@"2"];
[subscriber sendCompleted];
});
return nil;
}];
[[signal1 zipWith:signal2] subscribeNext:^(id x) {
NSLog(@"3");
}];
首先创建两个信号。这里推荐在异步任务方法中添加一个block,在block回调中作
[subscriber sendNext:@"1"];
[subscriber sendCompleted];
发送next消息,这里可以为nil;注意这两条必须写,不写的话下面的绑定就没有意义。
ZipWith绑定两个任务。回调中执行两个异步任务完成后的动作。对于多个任务的绑定楼主还是研究。。。