RxJava PublishSubject + Debounce:第二项未发出

时间:2018-07-04 07:25:54

标签: android rx-java rx-java2 subject-observer

我想使用PublishSubject +反跳(在订阅逻辑中)来延迟发送我的项目。这是我的代码:

订阅逻辑:

notificationSubject = PublishSubject.create<Notification>()
notificationSubject
            .debounce(300, TimeUnit.MILLISECONDS)
            .doOnIOSubscribeOnMain() // ext. fun, I hope you understand it
            .subscribe {
                displayNotification(it)
            }

并发出对象逻辑:

showNotification(obj1)
showNotification(obj2) 
// ...
fun showNotification(notification: Notification) {
    notificationSubject.onNext(notification)
}

但是在订阅时,我仅收到第一个发出的项目(obj1)。而且,如果我再次发出两个对象(obj3,obj4),那么我只会收到第一个发出的对象(obj3)。

如何解决?

1 个答案:

答案 0 :(得分:2)

去抖动是一种有损运算符,它会跳过发射彼此之间距离太近的项目。您不能用它来满足您的要求。

您可以使用一个间隔来代替zip:

[ForeignKey("CustomerID")]
public Customer Customer { get; set; }