美文网首页
rac_liftSelector

rac_liftSelector

作者: 下班不写程序 | 来源:发表于2020-10-13 10:07 被阅读0次

    文章系列
    《ReactiveCocoa 概述》
    《RACSignal》
    《RACDisposable》
    《RACSubject、RACReplaySubject(内附冷信号和热信号的区别)》
    《集合RACTuple、RACSequence》
    《RAC 中的通知、代理、KVO, 基本事件、方法的监听》
    《rac_liftSelector》
    《RACMulticastConnection》
    《RACCommand》
    《RAC - 核心方法bind》
    《RAC - 定时器》
    《RACScheduler》
    《RAC - 点击获取验证码 demo》
    《RAC - 映射(Map & flattenMap)》
    《RAC信号操作解释合集》
    《RAC - 信号的生命周期》

    当一个界面中有多次请求时,需要保证全部都请求完成,才搭建(刷新)界面,这时需要用到该方法.

    • 代码分析:
    - (void)rac_liftSelectorTest {
        
        RACSignal *firstSignal = [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber>  _Nonnull subscriber) {
           
            NSLog(@"模拟第一个网络请求");
            [subscriber sendNext:@"第一次获取到的网络数据"];
            return nil;
        }];
        
        RACSignal *secondSignal = [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber>  _Nonnull subscriber) {
           
            NSLog(@"模拟第二个网络请求");
            [subscriber sendNext:@"第二次获取到的网络数据"];
            return nil;
        }];
        
        RACSignal *thirdSignal = [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber>  _Nonnull subscriber) {
           
            NSLog(@"模拟第三个网络请求");
            [subscriber sendNext:@"第三次获取到的网络数据"];
            return nil;
        }];
        
        // 方法updateUIWithData1...的参数,对应每个信号发送的数据
        [self rac_liftSelector:@selector(updateUIWithData1:Data2:Data3:) withSignalsFromArray:@[firstSignal, secondSignal, thirdSignal]];
    }
    
    /// 监听多个模块全部执行完成
    /// 方法的参数必须与监听的信号一一对应
    /// 方法的参数就是每个信号发送的数据
    /// @param data1 对应上面firstSignal 监听的信号发送的数据
    /// @param data2 对应上面secondSignal 监听的信号发送的数据
    /// @param data3 对应上面thirdSignal 监听的信号发送的数据
    - (void)updateUIWithData1:(NSString *)data1 Data2:(NSString *)data2 Data3:(NSString *)data3 {
        
        NSLog(@"更新UI:%@-%@-%@", data1, data2, data3);
    }
    

    .End

    相关文章

      网友评论

          本文标题:rac_liftSelector

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