RxJava的Observable同时使用doOnTerminate
和doAfterTerminate
方法。
区别在于doOnTerminate
在 onCompleted
或onError
之前被称为,而doAfterTerminate
在之后被称为。这两种方法似乎都很有用。
Single但是只有doAfterTerminate
。
为什么Single
没有doOnTerminate
方法?
答案 0 :(得分:3)
只是让大家知道RxJava 2.2.7中已经为doOnTerminate
和Single
添加了Maybe
答案 1 :(得分:2)
单个有2个终止条件
在这两种情况下,终止都隐含在操作中。鉴于它只有两种方法,额外的运算符可能不会被视为对用户自己实现的努力有用。
也许你可以给RxJava团队写一封电子邮件并提出一个包含的案例?
答案 2 :(得分:2)
如果您确实需要onComplete
行为之前的,则可以使用Single#toObservable
进行转换。
但是,我是如何理解的:对于一个Observable,术语在终止之前意味着在发出所有项目之后,但在onComplete
之前。然而,对于Single,没有这样的时刻 - 因为发出一个项目并完成是相同的操作。
如果有一个doOnTerminate
运算符,它或者意味着不同的东西(在发出单个项目之前运行),或者与单一项目的理解相矛盾(发出项目并完成是一个动作,那么为什么呢?在两者之间运行的东西) - 两者都有点糟糕的设计。
出于好奇:您的原始案例是什么,您无法在doAfterTerminate
或启动单身之前拨打电话?