美文网首页
iOS开发RAC中retry、replay、throttle的使

iOS开发RAC中retry、replay、throttle的使

作者: 心成则玲 | 来源:发表于2022-08-02 15:59 被阅读0次

首先解释一下这三个关键字在rac中的作用:
retry:重试,只要失败就会重新执行创建信号中的block,直到成功为止
replay:重放,当一个信号被多次订阅,反复播放其内容
throttle:节流,当某个信号发送比较频繁时,可以使用节流,在某一时间段不发送信号内容,过段时间后获取信号的最新发出内容(比如搜索框频繁发送请求,按钮避免重复点击)

retry

__block NSInteger i = 0;
RACSignal *retrySignal = [[RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
        if (i == 3) {
            [subscriber sendNext:[NSString stringWithFormat:@"发送成功:%@",@(i)]];
        } else {
            NSLog(@"发送错误信息:%@",@(i));
            NSError *error = nil;
            [subscriber sendError:error];
        }
        i++;
        return nil;
    }] retry];
[retrySignal subscribeNext:^(id x) {
        //当接收到信号后,发送就会停止
        NSLog(@"%@",x);
    } error:^(NSError *error) {
        
    }];

replay

 __block NSInteger i = 1;
    RACSignal *testSignal = [[RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber>  _Nonnull subscriber) {
        [subscriber sendNext:@(i)];
        i ++;
        return nil;
    }]replay];
    
    [testSignal subscribeNext:^(id  _Nullable x) {
        NSLog(@"第一个订阅者:%@",x);
    }];
    
    [testSignal subscribeNext:^(id  _Nullable x) {
        NSLog(@"第二个订阅者:%@",x);
    }];

注:不执行replay输出结果为:第一个订阅者:1,第二个订阅者:2
使用replay输出结果为:第一个订阅者:1,第二个订阅者:1

throttle

UITextField *textfield;
 [[[textfield rac_textSignal] throttle:1] subscribeNext:^(id x) {
      NSLog(@"开始搜索请求==%@", x);
  }];

注:指定时间间隔内,不再发送信号 这里添加 throttle, 表示在 1 秒内 text 没有改变时,才会进行搜索请求

相关文章

  • iOS开发RAC中retry、replay、throttle的使

    首先解释一下这三个关键字在rac中的作用:retry:重试,只要失败就会重新执行创建信号中的block,直到成功为...

  • iOS开发「RAC」RAC中的重复操作方法retry、repla

    retry :只要失败,就会重新执行创建信号中的block,直到成功 replay :当一个信号被多次订阅,反复播...

  • iOS RAC-进阶用法

    map filter 过滤 combine takeUntil retry replay 2019-01-31 1...

  • RAC基础

    最近接触学习到了RAC(ReactiveCocoa),RAC是函数式+响应式编程结合 我们在iOS开发中,页面之间...

  • ReactiveCocoa详解

    一、RAC介绍 RAC 是一个 iOS 中的函数式响应式编程框架,一般与MVVM配套使用。在非RAC开发中,都是习...

  • 2019-12-10

    iOS开发之RAC(一)初级篇 一、RAC是什么? 1、RAC全称:ReactiveCocoa, Github 一...

  • RAC iOS

    使用RAC 1.target-action RAC最基本的入门使用技巧就是对事件的监听。 PS:在iOS开发中,我...

  • RAC简介

    前言 RAC是iOS开发中经常使用到响应式框架,在OC中可以通过pod导入 RAC信号创建与发送 RAC中一个常见...

  • iOS 基于MVVM + RAC + ViewModel-Bas

    iOS 基于MVVM + RAC + ViewModel-Based Navigation的微信开发 iOS 基于...

  • 【other】Rac EventBus RxJava

    聊一聊 Rac Rac 是什么 Rac 全称 Reactivecocoa,是一个应用于iOS和OS X开发的框架,...

网友评论

      本文标题:iOS开发RAC中retry、replay、throttle的使

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