ReactiveCocoa操作方法-重复
2024-09-06 05:17:05
retry重试
只要失败,就会重新执行创建信号中的block,直到成功.
__block int i = 0;
[[[RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) { if (i == 10) {
[subscriber sendNext:@1];
}else{
NSLog(@"接收到错误");
[subscriber sendError:nil];
}
i++; return nil; }] retry] subscribeNext:^(id x) { NSLog(@"%@",x); } error:^(NSError *error) {
NSLog(@“error = %@",error);
}];
replay重放
当一个信号被多次订阅,反复播放内容
RACSignal *signal = [[RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
[subscriber sendNext:@1];
[subscriber sendNext:@2];
return nil;
}] replay]; [signal subscribeNext:^(id x) {
NSLog(@"第一个订阅者%@",x);
}]; [signal subscribeNext:^(id x) {
NSLog(@"第二个订阅者%@",x);
}];
throttle节流
当某个信号发送比较频繁时,可以使用节流,在某一段时间不发送信号内容,过了一段时间获取信号的最新内容发出。
RACSubject *signal = [RACSubject subject];
_signal = signal;
// 节流,在一定时间(1秒)内,不接收任何信号内容,过了这个时间(1秒)获取最后发送的信号内容发出。
[[signal throttle:1] subscribeNext:^(id x) {
NSLog(@"%@",x);
}];
最新文章
- Enterprise Solution 虚拟测试环境
- MVC5 网站开发实践 1、建立项目
- 微信小程序实例
- 验证视图状态MAC失败。如果此应用程序由网络场或群集承载,请确保配置指定了相同的validationKey和验证算法(转)
- CentOS 6.5下Redis安装详细步骤
- Android下创建一个SQLite数据库
- Nginx初学者指南
- MyBatis源码分析(1)-MapConfig文件的解析
- Windows7上搭建Cocos2d-x 3.1.1开发环境
- Apache-Shiro+Zookeeper系统集群安全解决方案之缓存管理
- ASP.NET文章目录导航
- 数值积分NIntegrate中的具体算法
- FIREDAC连接SQLITE乱码的解决
- 【Winform】锐浪报表使用
- 北京出dell s2740显示器 1900 - V2EX
- 新手入门vue 使用vue-cli创建项目
- 【原创】大叔问题定位分享(18)beeline连接spark thrift有时会卡住
- TreeView CheckBox勾选联动
- [Angular] &#39;providedIn&#39; for service
- MDX函数
热门文章
- robot_framewok自动化测试--(7)认识RIDE
- 2021广东省强网杯WriteUp
- GitHub 12个实用技巧-从projiect项目管理、代码链接到博客wiki全过程
- 大爽Python入门教程 3-6 答案
- js-sequence-diagrams >; 时序图
- 分布式条件下Integer大小比值的问题
- Vue: 一个简单的Vue2.0 v-model双向数据绑定的实现,含源代码,小白也能看懂
- 由于vue的for循环id并不严谨,提高id严谨性
- javascript-初级-day05js函数传参
- ThinkPad笔记本外放没声音解决办法(不是驱动的原因)