我是靠谱客的博主 合适小鸭子,最近开发中收集的这篇文章主要介绍【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 (6) 多次订阅一次请求所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部