博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【iOS编程思想】ReactiveCocoa (6) 多次订阅一次请求
阅读量:6972 次
发布时间:2019-06-27

本文共 1117 字,大约阅读时间需要 3 分钟。

hot3.png

先来看看下面这个方法:

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

//1 创建信号RACSignal * signal = [RACSignal createSignal:^RACDisposable *(id
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
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

你可能感兴趣的文章
第十二次作业
查看>>
第136天:Web前端面试题总结(理论)
查看>>
iOS开发-模板方法模式
查看>>
算法-最大连续子序列和
查看>>
NodeJS之Mac初体验
查看>>
勾股数
查看>>
zoj 1597 Circular Area
查看>>
v-solt插槽
查看>>
OCM_第六天课程:Section3 —》数据库可用性
查看>>
ORA-00257 archiver error. 错误的处理方法
查看>>
开发Servlet的方法(2)
查看>>
Apache mod_wsgi部署Django项目
查看>>
玲珑杯#20 C 漆黑的太阳——莫队
查看>>
MySQL数据库建立外键失败的原因总结
查看>>
网络资源收集工具编码规范
查看>>
ZOJ3778 Talented Chef(贪心)
查看>>
iOS上的反射用法
查看>>
CF1072A Palindromic Twist 思维
查看>>
Leetcode c语言-Permutations
查看>>
《javascript设计模式》阅读笔记
查看>>