美文网首页
ReactiveCocoa操作方法-重复

ReactiveCocoa操作方法-重复

作者: 傻傻小萝卜 | 来源:发表于2016-08-15 17:20 被阅读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);

    }];

    相关文章

      网友评论

          本文标题:ReactiveCocoa操作方法-重复

          本文链接:https://www.haomeiwen.com/subject/evbusttx.html