RACCommand

  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)包装起来。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容