RxSwift-Observable asDriver后的事件订阅关系

实验

创建一个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:{})
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 RxSwift入坑解读-你所需要知道的各种概念 沸沸腾关注 2016.11.27 19:11*字...
    枫叶1234阅读 2,869评论 0 2
  • 文章转自:http://gank.io/post/560e15be2dca930e00da1083作者:扔物线在正...
    xpengb阅读 7,077评论 9 73
  • 我从去年开始使用 RxJava ,到现在一年多了。今年加入了 Flipboard 后,看到 Flipboard 的...
    Jason_andy阅读 5,656评论 7 62
  • 雨霁日出新来绿 锦年若灿怜我颜 红尘繁复心尚浅 纯玉一片如何安 图来自网络,若有侵权,请联系
    零露昔扬阅读 153评论 0 0
  • 写了快15万字了。开心。 现在也依旧写不好,但我更有信心写的比昨天好。 收获很多,获得的收益远远大于开始写字时的初...
    丨张伟丨阅读 177评论 2 4