我是靠谱客的博主 合适小鸭子,这篇文章主要介绍【iOS编程思想】ReactiveCocoa (6) 多次订阅一次请求,现在分享给大家,希望可以做个参考。

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

先来看看下面这个方法:

每次订阅时都会发送请求。

//1 创建信号
RACSignal * signal = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
NSLog(@"发送数据的请求");
//3 发送请求
[subscriber sendNext:@1];
return nil;
}];
//2 订阅信号
[signal subscribeNext:^(id x) {
NSLog(@"订阅者一 %@",x);
}];
[signal subscribeNext:^(id x) {
NSLog(@"订阅者二 %@",x);
}];

测试结果:

162749_4b8j_2279344.png

如何做到多次订阅一次请求呢?有下面两个方法:

 

1、RACSubject 多次订阅 一起请求

RACSubject * subject = [RACSubject subject];
[subject subscribeNext:^(id x) {
NSLog(@"1 %@",x);
}];
[subject subscribeNext:^(id x) {
NSLog(@"2 %@",x);
}];
//一次请求
[subject sendNext:@1];

运行测试:

162526_njhd_2279344.png

 

2、RACMulticastConnection 把信号转换为连接类

不管订阅多少次,只会请求一次,连接类必须有信号。

//1 创建信号
RACSignal * signal = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
NSLog(@"发送数据的请求");
[subscriber sendNext:@"发送的数据"];
return nil;
}];
//2 把信号转换成连接类
RACMulticastConnection * cnt = [signal multicast:[RACSubject subject]];
//3 订阅连接类信号
[cnt.signal subscribeNext:^(id x) {
NSLog(@"订阅者:%@",x);
}];
[cnt.signal subscribeNext:^(id x) {
NSLog(@"订阅者二 %@",x);
}];
//4 连接
[cnt connect];

测试结果:
163515_onad_2279344.png

转载于:https://my.oschina.net/Misayalvyuan/blog/727310

最后

以上就是合适小鸭子最近收集整理的关于【iOS编程思想】ReactiveCocoa (6) 多次订阅一次请求的全部内容,更多相关【iOS编程思想】ReactiveCocoa内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(161)

评论列表共有 0 条评论

立即
投稿
返回
顶部