在平时写项目的过程中,我们经常遇到一个页面要发送多个网络请求的问题,但是受限于网络,数据返回的时间不一致,但是我们希望所有的数据都返回的时候才显示页面,要处理这样的需求,RAC(Reactive Cocoa)有非常简洁的做法,大概思路如下:
RACSignal *request1 = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
// 发送请求1
[subscriber sendNext:@"发送请求1"];
return nil;
}];
RACSignal *request2 = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
// 发送请求2
[subscriber sendNext:@"发送请求2"];
return nil;
}];
// 使用注意:几个信号,参数一的方法就几个参数,每个参数对应信号发出的数据。
[self rac_liftSelector:@selector(updateUIWithR1:r2:) withSignalsFromArray:@[request1,request2]];
// 更新UI
- (void)updateUIWithR1:(id)data1 r2:(id)data1
{
NSLog(@"更新UI%@ %@",data1,data1);
}
不得不说,RAC太好用了!
赋两篇入门教程: