ReactiveCocoa操作方法-重复

2016-08-15  本文已影响81人  傻傻小萝卜

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);

}];

上一篇下一篇

猜你喜欢

热点阅读