- 创建
RACCommand
_loginCmd = [[RACCommand alloc] initWithSignalBlock:^RACSignal *(id input) {
return [self loginAction];
}];
initWithSignalBlock
保存了:
_signalBlock
_executionSignals
_errors
_executing
等block

- 订阅信号
-
executionSignals
:这个是signal of signals(信号的信号),意思是信号发出的数据是信号,不是普通的类型
[_loginCmd.executionSignals.switchToLatest subscribeNext:^(id _Nullable x) {
NSLog(@"switchToLatest: %@", x);
}];
-
executing
:监听当前命令是否正在执行
[[_loginCmd.executing skip:1] subscribeNext:^(NSNumber * _Nullable x) {
//NSLog(@"executing: %@", x);
if ([x boolValue]) {
NSLog(@"executing ing");
} else {
NSLog(@"executing done");
}
}];
-
errors
:订阅发送的error
信号
///在对command进行错误处理的时候,不使用subscribeError:对command的executionSignals进行错误的订阅,executionSignals这个信号是不会发送error事件的,当command包裹的信号发送error事件时,用到command的一个属性:errors,可以对错误进行订阅:
[_loginCmd.errors subscribeNext:^(NSError * _Nullable x) {
NSLog(@"err: %@", x.userInfo.allValues.lastObject);
}];
- 订阅执行命令
execute:
的信号,在第3
点列出
-
command
执行命令execute:
[_loginCmd execute:@"登录"];
execute:
执行block
: signalBlock()
,返回RACMulticastConnection
信号

- 订阅执行命令
execute:
的信号
[[_loginCmd execute:@"登录"] subscribeNext:^(id _Nullable x) {
NSLog(@" %@", x);
} error:^(NSError * _Nullable error) {
NSLog(@"err: %@", error);
} completed:^{
NSLog(@"completed");
}];
网友评论