RAC信号

1、 信号量的合并CombineLatest

信号量的合并说白了就是把两个水管中的水合成一个水管中的水。但这个合并有个限制,当两个水管中都有水的时候才合并。如果一个水管中有水,另一个水管中没有水,那么有水的水管会等到无水的水管中来水了,在与这个水管中的水按规则进行合并。下面这个实例就是把两个信号量进行合并

  • 首先创建两个自定义的信号量letters和numbers

  • 把两个信号量通过combineLatest函数进行合并,combineLatest说明要合并信号量中最后发送的值

  • reduce块中是合并规则:把numbers中的值拼接到letters信号量中的值后边。

  • 经过上面的步骤就是创建所需的相关信号量,也就是相当于架好运输的管道。接着我们就可以通过sendNext方法来往信号量中发送值了,也就是往管道中进行灌水

- (void) combiningLatest{
 RACSubject *letters = [RACSubject subject];
 RACSubject *numbers = [RACSubject subject];

[[RACSignal
   combineLatest:@[letters,numbers]
   reduce:^(NSString*letter,NSString *number){
         return [letter stringByAppendingString:number];
        }]
  subscribeNext:^(NSString*x) {
          NSLog(@"%@", x);
        }];

 // 输出结果B1 C1 C2
[letters sendNext:@"A"];
[letters sendNext:@"B"];
[numbers sendNext:@"1"];
[letters sendNext:@"C"];
[numbers sendNext:@"2"];
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容