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