Android 是否有可能实现类似于运算符的延迟,但也会延迟错误?

Android 是否有可能实现类似于运算符的延迟,但也会延迟错误?,android,rx-java2,reactivex,rx-kotlin,Android,Rx Java2,Reactivex,Rx Kotlin,我现在正在尝试一段时间来实现一个扩展功能(只是因为它对我来说更容易),它能够延迟正常的项目排放和错误。现有延迟操作员仅延迟正常项目排放,错误将尽快交付 在上下文中,我试图模仿Android LiveData的行为(有点)。LiveDatas是一种可观察的模式实现,具有生命周期意识。他们的观察员只有在其能够处理该排放的状态下才会得到通知。如果它们还没有准备好,发射将被缓存在livedata中,并在它们准备好后立即交付 我创建了一个行为主体,当它发生变化时,它会发出我活动和片段的状态。因此,我创建了

我现在正在尝试一段时间来实现一个扩展功能(只是因为它对我来说更容易),它能够延迟正常的项目排放和错误。现有延迟操作员仅延迟正常项目排放,错误将尽快交付

在上下文中,我试图模仿Android LiveData的行为(有点)。LiveDatas是一种可观察的模式实现,具有生命周期意识。他们的观察员只有在其能够处理该排放的状态下才会得到通知。如果它们还没有准备好,发射将被缓存在livedata中,并在它们准备好后立即交付

我创建了一个行为主体,当它发生变化时,它会发出我活动和片段的状态。因此,我创建了一个延迟操作符,如下所示:

fun <T> Flowable<T>.delayUntilActive(): Flowable<T> = delay { lifecycleSubject.toFlowable(BackpressureStrategy.LATEST).filter { it.isActive } }
因此,即使myUseCase在视图未准备好显示某些内容时发射,在视图准备好之前,发射也不会到达onNext()。问题是,我还希望在触发OneError时视图显示error(),但这也是生命周期敏感的。如果视图未就绪,应用程序将崩溃

所以我正在寻找一种方法来延迟排放和错误(onComplete也不错)。这可能吗? 我试着用zip、onErrorReturn、delay和delay做了一些事情,但似乎没有什么是对的。如果我忽略了一个非常简单的解决方案,或者是不可能的解决方案,我也同样不感兴趣。欢迎提出任何意见

奖励:还有什么更好的方法可以让你的单曲和全集也这样做吗?目前,我只是将它们转换为可流动的


提前谢谢

您可以通过
onErrorResumeNext
处理错误,然后接受相同的错误,并通过
delaySubscription
延迟该错误,直到发出所述错误的所需信号:

source
.onErrorResumeNext({ error -> 
     Observable.error(error)
     .delaySubscription(lifecycleSubject.filter { it.Active } ) 
})

您可以通过
onErrorResumeNext
处理错误,然后接受相同的错误并通过
delaySubscription
将其延迟,直到发出所述错误的所需信号:

source
.onErrorResumeNext({ error -> 
     Observable.error(error)
     .delaySubscription(lifecycleSubject.filter { it.Active } ) 
})