RACCommand其作用就是 得到信号指令来 触发动作执行
实例一:简单使用
RACCommand *command = [[RACCommand alloc] initWithSignalBlock:^RACSignal * _Nonnull(id _Nullable input) {
NSLog(@"[input : %@]",input);
return [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber> _Nonnull subscriber) {
[subscriber sendNext: @"[返回的信号发送数据]"];
return nil;
}];
}];
RACSignal *signal = [command execute: @"[执行]"];
[signal subscribeNext:^(id _Nullable x) {
NSLog(@"[订阅信号得到的数据:%@]",x);
}];
还有一种方法得到RACCommand内部block的信号:
使用信号源executionSignals
得到发送的信号
RACCommand *command = [[RACCommand alloc] initWithSignalBlock:^RACSignal * _Nonnull(id _Nullable input) {
NSLog(@"[input : %@]",input);
return [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber> _Nonnull subscriber) {
[subscriber sendNext: @"[信号发送数据]"];
return nil;
}];
}];
[command.executionSignals subscribeNext:^(RACSignal *x) {
NSLog(@"[executionSignals : %@]",x);
[x subscribeNext:^(id _Nullable y) {
NSLog(@"[execution 订阅 : %@]",y);
}];
}];
[command execute: @"[执行]"];
第三种方法得到command内部信号源发送的信号:
使用信号源的switchToLatest
方法
RACCommand *command = [[RACCommand alloc] initWithSignalBlock:^RACSignal * _Nonnull(id _Nullable input) {
NSLog(@"[input : %@]",input);
return [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber> _Nonnull subscriber) {
[subscriber sendNext: @"[信号发送数据]"];
return nil;
}];
}];
[command.executionSignals.switchToLatest subscribeNext:^(id _Nullable x) {
NSLog(@"[executionSignals : %@]",x);
}];
[command execute: @"[执行]"];
实例二:监听执行过程
RACCommand *command = [[RACCommand alloc] initWithSignalBlock:^RACSignal * _Nonnull(id _Nullable input) {
NSLog(@"[input : %@]",input);
return [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber> _Nonnull subscriber) {
[subscriber sendNext: @"[返回的信号发送数据]"];
[subscriber sendCompleted];
return nil;
}];
}];
RACSignal *signal = [command execute: @"[执行]"];
[signal subscribeNext:^(id _Nullable x) {
NSLog(@"[订阅信号得到的数据:%@]",x);
}];
[command.executing subscribeNext:^(NSNumber * _Nullable x) {
NSLog(@"excuting : %@",x);
}];