RxSwift-Observable asDriver后的事件订

作者: LJCoder | 来源:发表于2017-07-08 14:28 被阅读137次

    实验

    创建一个Observable信号,发送next和error信号

    let observer = Observable<Any>.create { (observer) -> Disposable in
                      observer.onNext("next")
                      observer.onError(LJError.faild)
                      //observer.onCompleted()
    
                      return Disposables.create()
                    }
    

    转换成Driver并订阅

    observer.asDriver(onErrorJustReturn: "driver error")
                .drive(onNext: { (next) in
                    print("driver onNext: \(next)")
                }, onCompleted: {
                    print("driver onCompleted")
                }, onDisposed: {
                    print("driver onDisposed")
                })
                .disposed(by: disposed)
    
    // output:
    driver onNext: next
    driver onNext: driver error
    driver onCompleted
    driver onDisposed
    


    发送next和completed信号,查看输出

    // output:
    driver onNext: next
    driver onCompleted
    driver onDisposed
    

    只发送 next信号

    driver onNext: next
    

    结论

    我们可以发现:

    1. observer.onNext() 可以触发 drive(onNext: {})
    2. observer.onError() 也可触发 drive(onNext: {}), 但是返回的不是error信息,是onErrorJustReturn的值
    3. observer.onError()observer.onCompleted() 都会触发 .drive(onCompleted:{})

    相关文章

      网友评论

      • 502afa582037:将Observable转换为Drive的时候有过滤操作 会先把error过滤掉。使我们在操作UI的时候省去了很多操作。bindTo和drive效果差不多,但是开发首选Drive
        LJCoder:Drive适合不会发送错误信号的,要处理错误还是要用Observable

      本文标题:RxSwift-Observable asDriver后的事件订

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