#import "FlatterAndMapVC.h"
#import "ReactiveObjC.h"
#import "RACReturnSignal.h"
@interface FlatterAndMapVC ()
@end
@implementation FlatterAndMapVC
/**
RAC 处理信号中的信号 三种方法
第一种: 双重订阅
第二种: 订阅最新的信号
第三种: flattenMap
*/
- (void)testFour {
// [self one];
// [self two];
[self three];
}
- (void)one {
RACSubject *subjectOfSignal = [RACSubject subject];
RACSubject * subject = [RACSubject subject];
[subjectOfSignal subscribeNext:^(id _Nullable x) {
[x subscribeNext:^(id _Nullable x) {
NSLog(@"%@",x);
}];
}];
[subjectOfSignal sendNext:subject];
[subject sendNext:@"干啥类"];
}
- (void)two {
RACSubject *subjectOfSignal = [RACSubject subject];
RACSubject *subject1 = [RACSubject subject];
[subjectOfSignal.switchToLatest subscribeNext:^(id _Nullable x) {
NSLog(@"%@",x);
}];
[subjectOfSignal sendNext:subject1];
[subject1 sendNext:@"弄啥嘞"];
}
- (void)three {
RACSubject *subjectOfSignal = [RACSubject subject];
RACSubject *subject1 = [RACSubject subject];
[[subjectOfSignal flattenMap:^__kindof RACSignal * _Nullable(id _Nullable value) {
return value;
}] subscribeNext:^(id _Nullable x) {
NSLog(@"%@",x);
}];
[subjectOfSignal sendNext:subject1];
[subject1 sendNext:@"弄啥嘞"];
}
@end
网友评论