ReactiveCocoa操作方法-重复

retry重试

只要失败,就会重新执行创建信号中的block,直到成功.

__block inti =0;

[[[RACSignal createSignal:^RACDisposable *(id subscriber) {

if(i ==10) {

[subscriber sendNext:@1];

}else{

NSLog(@"接收到错误");

[subscriber sendError:nil];

}

i++;

returnnil;

}] retry] subscribeNext:^(idx) {

NSLog(@"%@",x);

} error:^(NSError *error) {

NSLog(@“error = %@",error);

}];

replay重放

当一个信号被多次订阅,反复播放内容

RACSignal *signal = [[RACSignal createSignal:^RACDisposable *(id subscriber) {

[subscriber sendNext:@1];

[subscriber sendNext:@2];

returnnil;

}] replay];

[signal subscribeNext:^(idx) {

NSLog(@"第一个订阅者%@",x);

}];

[signal subscribeNext:^(idx) {

NSLog(@"第二个订阅者%@",x);

}];

throttle节流

当某个信号发送比较频繁时,可以使用节流,在某一段时间不发送信号内容,过了一段时间获取信号的最新内容发出。

RACSubject *signal = [RACSubject subject];

_signal = signal;

// 节流,在一定时间(1秒)内,不接收任何信号内容,过了这个时间(1秒)获取最后发送的信号内容发出。

[[signal throttle:1] subscribeNext:^(idx) {

NSLog(@"%@",x);

}];

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • RAC使用测试Demo下载:github.com/FuWees/WPRACTestDemo 1.ReactiveC...
    FuWees阅读 6,517评论 3 10
  • 前言 之前对RAC有了一个基本的认识,了解了它的作用,以及RAC的运行机制,我们知道只要是信号(RACSignal...
    大大盆子阅读 4,527评论 0 11
  • 1.ReactiveCocoa常见操作方法介绍。 1.1 ReactiveCocoa操作须知 所有的信号(RACS...
    萌芽的冬天阅读 1,056评论 0 5
  • 1.ReactiveCocoa常见操作方法介绍1.1 ReactiveCocoa操作须知所有的信号(RACSign...
    IIronMan阅读 2,634评论 2 17
  • 以前从没有想过会有一首歌,让人突然觉得自己老了几十岁,直到听见李宗盛 ——《一首李宗盛,恍然几十...
    曹振翔阅读 705评论 3 3