zoukankan      html  css  js  c++  java
  • ReactiveCocoa操作方法-重复

    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);
    }];
  • 相关阅读:
    day_03、初识函数
    一、Python简介
    四、列表和元祖
    MinGW安装和使用
    python编码总结
    开博第一篇,学习markdown
    python 2.7.11安装pywin32过程中 停止工作问题
    python读写excel
    关于\r和\n的区别
    1.1 Python for macOS 安装与配置
  • 原文地址:https://www.cnblogs.com/HMJ-29/p/4944009.html
Copyright © 2011-2022 走看看