美文网首页iOS-SDK开发
iOS开发 「RAC」用RAC实现界面有多个请求都完成后再刷新界

iOS开发 「RAC」用RAC实现界面有多个请求都完成后再刷新界

作者: 俺不是大佬儿 | 来源:发表于2021-11-02 14:34 被阅读0次

    - (RACSignal *)rac_liftSelector:(SEL)selector withSignalsFromArray:(NSArray *)signals当传入的signals(信号数组),每一个signal都至少sendNext过一次,才会去触发第一个selector参数的方法,就是说当signals中的所有请求信号都执行完成后才会触发selector对应的方法

    应用示例:

    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view.
    
        //创建第一项数据请求
        RACSignal *request1 = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
            NSLog(@"请求第一项数据");
            [subscriber sendNext:@"获取到的第一项请求数据"];
            return nil;
        }];
        //创建第二项数据请求
        RACSignal *request2 = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
            NSLog(@"请求第二项数据");
            [subscriber sendNext:@"获取到的第二项请求数据"];
            return nil;
        }];
        //创建第三项数据请求
        RACSignal *request3 = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
            NSLog(@"请求第三项数据");
            [subscriber sendNext:@"获取到的第三项请求数据"];
            return nil;
        }];
        
        // Selector调用:当所有信号都发送数据时调用
        // 数组存放多个信号
        // Selector注意点:参数根据数组元素决定(数据的顺序 / 数据类型)
        // Selector方法中的参数类型,就是信号传递出来的数据
        [self rac_liftSelector:@selector(updateUI:data2:data3:) withSignalsFromArray:@[request1,request2,request3]];
    }
    
    // 只有三个请求都请求完成才会调用
    - (void)updateUI:(NSString *)data1 data2:(NSString *)data2  data3:(NSString *)data3
    {
        NSLog(@"请求都结束了:%@  \n %@ \n %@",data1,data2,data3);
    }
    
    

    \color{gray}{欢迎大佬来指正纠错,共同学习😏!}

    相关文章

      网友评论

        本文标题:iOS开发 「RAC」用RAC实现界面有多个请求都完成后再刷新界

        本文链接:https://www.haomeiwen.com/subject/ysfpgltx.html