几种常见的Observables创建方法

func creatObservable(){

    //just - 只包含一个事件的序列
    _ = Observable.just("111").subscribe{

        (evevt:RxSwift.Event<String>) -> Void in

        print(evevt)

    }

    //of - 包含固定个数事件的序列
    _ = Observable.of(0,1,2,3,4)
        .subscribe({
            (evevt: RxSwift.Event<Int>) -> Void in

            print(evevt)

        })

    // error - 只产生.Error事件的序列
    let err = NSError(domain: "Test", code: -1, userInfo: nil)

    _ = Observable<Int>.error(err)
        .subscribe({

            (event: RxSwift.Event<Int>) in

            print(event)

        })


    //调用创建的自定义事件
    myJust(10).subscribe{

        print($0)

    }

    myJust(5).subscribe {

        print($0)

    }


    //generate - 用prev决定next的事件序列
    _ = Observable.generate(
        initialState: 0,
        condition: {$0 < 10},
        iterate: {$0 + 1})
        .subscribe{

            print($0)

    }


    //deferred - 只有在被订阅后才创建并产生事件的序列
    let deferredSequence = Observable<Int>.deferred {
        print("generating")

        return Observable.generate(
            initialState: 0,
            condition: { $0 < 3 },
            iterate: { $0 + 1})
    }


    //当我们订阅deferredSequence时:
    _ = deferredSequence.subscribe { print($0) }

    _ = deferredSequence.subscribe { print($0) }

}

//create - 自定义的事件序列
func myJust(event: Int) -> Observable<Int> {

    return Observable.create { observer in

        if  event % 2 == 0 {

            observer.on(.Next(event))
            observer.on(.Completed)


        }else {

            let err = NSError(domain: "不符合条件", code: 1000, userInfo: nil)

            observer.on(.Error(err))

        }


        return NopDisposable.instance

    }


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值