RACCommand

作者: tom555cat | 来源:发表于2017-09-17 12:49 被阅读29次
    1. 创建RACCommand需要提供一个block参数,这个block返回RACSignal,也就是说block内部需要创建一个RACSignal。
        self.command = [[RACCommand alloc] initWithSignalBlock:^RACSignal *(id input) {
            RACSignal *signal = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
                [self httpRequest:@"POST" param:@{@"commandKey":input} completion:^(id response) {
                    [subscriber sendNext:@(999)];
                    [subscriber sendCompleted];
                }];
                return nil;
            }];
            return signal;
        }];
    
    1. 如何能够获取block创建的信号传递的值?通过如下方式去订阅block创建的信号。
        [self.command.executionSignals.switchToLatest subscribeNext:^(id x) {
            if ([x integerValue] == 999) {
                NSLog(@"登陆成功");
            }
        }];
    
    1. 订阅block创建的信号不会使block的信号执行,那么block的信号是如何执行的?
    [self.command execute:@"入参"];
    
    1. 如何将RACCommand与UIButton联系起来?
        [[self.button rac_signalForControlEvents:UIControlEventTouchUpInside] subscribeNext:^(id x) {
            [self.viewModel.command execute:@"在ViewController中按钮按下执行RACCommand"];
        }];
    

    总结

    RACCommand将事件处理(网络请求),事件中的数据如何传递(subscribeNext)包装起来。

    相关文章

      网友评论

        本文标题:RACCommand

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