RxSwift Operator 之 filter 过滤

389 阅读1分钟
创建Observable
     let obserable1 = Observable<Int>.create { (observe) -> Disposable in
            observe.onNext(10);
            observe.onNext(22);
            observe.onNext(33);
            observe.onNext(3);
            observe.onNext(5);

            return Disposables.create();
        }
过滤小于20数据
        obserable1.filter{ $0 > 20 }.subscribe { (onNext) in
            print(onNext)
        }.dispose();

打印

next(30)next(40)next(50)

map

  let obserable1 = Observable<Int>.create { (observe) -> Disposable in
            observe.onNext(10);
            observe.onNext(20);
            observe.onNext(30);
            observe.onNext(40);
            observe.onNext(50);


            return Disposables.create();
        }
        
        obserable1.map{ "所有数据乘以10 \($0 * 10)"}.subscribe { (onNext) in
            print(onNext);
        }

打印

next(所有数据乘以10 100)
next(所有数据乘以10 200)
next(所有数据乘以10 300)
next(所有数据乘以10 400)
next(所有数据乘以10 500)

zip

        let obserable1 = Observable<Int>.create { (observe) -> Disposable in
            observe.onNext(10);
            observe.onNext(20);
            observe.onNext(30);
            observe.onNext(40);
            observe.onNext(50);


            return Disposables.create();
        }
        
        let obserable2 = Observable<String>.create { (observe) -> Disposable in
            observe.onNext("A");
            observe.onNext("B");
            observe.onNext("C");


            return Disposables.create();
        }
        
        Observable.zip(obserable1, obserable2) { "\($0)" + $1 }.subscribe { (onNext) in
            print(onNext)
        }.dispose();

打印

next(10A)
next(20B)
next(30C)

just

  let obserable3 = Observable.just(123456);
        obserable3.subscribe { (onNext) in
            print(onNext)
        }

打印next(123456)
completed

timer

  //间隔2两秒,10 秒后发出
        let obserable4 = Observable<Int>.timer(.seconds(10), period: .seconds(2), scheduler: MainScheduler.instance)
        obserable4.subscribe { (onNext) in
            print("当前秒数\(onNext)")
        }