zoukankan      html  css  js  c++  java
  • Operation之其他实用操作符

    delay

    • 该操作符会将 Observable 的所有元素都先拖延一段设定好的时间, 然后才将他们发送出来
    Observable.of(1,2,3,4)
        .delay(5, scheduler: MainScheduler.instance)
        .subscribe(onNext: { print($0) })
        .disposed(by: bag)
    

    delaySubscription

    • 该操作符可以进行延时订阅. 即经过所设定的时间后, 才对Observable进行订阅操作
    Observable.of(1,2,3,4)
        .delaySubscription(3, scheduler: MainScheduler.instance)
        .subscribe(onNext: { print($0) })
        .disposed(by: bag)
    

    materialize

    • 该操作符可以将序列产生的事件, 转换成元素
    • 通常一个有限的Observable将产生0个或者多个onNext事件, 最后产生一个onCompleted或者onError事件. 而materialize操作符会将Observable产生的这些事件全部转换成元素, 然后发送出来
    Observable.of(1,2,3,4)
        .materialize()
        .subscribe(onNext: { print($0) })
        .disposed(by: bag)
    

    dematerialize

    • 该操作符的作用和materialize正好相反, 它可以将materialize转换后的元素还原
    Observable.of(1,2,3,4)
        .materialize()
        .dematerialize()
        .subscribe(onNext: { print($0) })
        .disposed(by: bag)
    

    timeout

    • 使用该操作符可以设置一个超时时间. 如果源Observable在规定时间内没有发生任何元素, 就产生一个超时的error事件

    let times = [
    ["value": 1, "time": 0],
    ["value": 2, "time": 0.5],
    ["value": 3, "time": 1.0],
    ["value": 4, "time": 1.5],
    ["value": 5, "time": 5],
    ["value": 6, "time": 6]
    ]

    Observable.from(times)
        .flatMap { item in
            return Observable.of(Int(item["value"]!))
                .delaySubscription(Double(item["time"]!), scheduler: MainScheduler.instance)
    }
        .timeout(2, scheduler: MainScheduler.instance) // 超过2秒没有发出元素, 则产生error事件
        .subscribe(onNext: { print($0) }, onError: {print($0)})
        .disposed(by: bag)
    

  • 相关阅读:
    空悬指针、野指针、内存泄漏、内存溢出
    自定义消息的操作方法ON_MESSAGE(..)
    为什么static成员变量一定要在类外初始化?
    Ubuntu 系统目录结构
    Beyond Compare 4 30天评估期结束的解决办法
    C++ string 字符串 结尾 标志
    C语言——枚举类型用法
    结构体struct-联合体union-枚举enum
    网卡bood
    kvm 安装
  • 原文地址:https://www.cnblogs.com/gchlcc/p/11975457.html
Copyright © 2011-2022 走看看