美文网首页
Observable.concatDelayError()

Observable.concatDelayError()

作者: qmr777 | 来源:发表于2020-06-23 15:49 被阅读0次

前段时间自己写了个小app,在启动的时候希望页面先展示缓存的数据,后展示从网上获取到的数据,于是很自然的想到了用concat方法。

Observable.concat(local,network)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(ob);

看起来很美好,但是断网后测试,发现有时候会什么都不展示。。。

打印log后发现,有时onSubscribe后会直接跳到onError,也就是network抛出的异常直接触发了onError,切断了数据流,想了各种办法都不管用。本来以为是local先走完onnext onComplete然后在请求网络的

查阅资料后找到了Observable.concatDelayError()方法,和concat方法类似,都是把两个Observable连接在一起


concat.png

不同的是,假如某个observable抛出了异常,concat会直接走onError,而concatDelayError会在所有数据都发射完后再走onError


concatDelayError.png
concatDelayError.png
渣英语翻译一下:将多个ObservableSource依次连接起来形成一个单独的Observable,依次延迟错误 直到所有的ObservableSource都终止(听起来怪怪的???有种做四六级翻译题的感觉),简单点说就是先onNext再onError(如果有),数据流不会被打断了 最后的解决方案,一切正常

相关文章

  • Observable.concatDelayError()

    前段时间自己写了个小app,在启动的时候希望页面先展示缓存的数据,后展示从网上获取到的数据,于是很自然的想到了用c...

网友评论

      本文标题:Observable.concatDelayError()

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