我需要创建一个队列,当一个项目被添加到队列时,应该通知订阅者。我的大脑只有解决方案是使用while循环来轮询队列或使用peek队列来比较是否将新对象添加到队列中,如果找到新项目则使用onNext()将项目转发给订阅者。这将是一个无限循环,这就是我需要观察队列。
答案 0 :(得分:0)
您可以对其中一个队列进行子类化,并让add
/ offer
/ etc ...方法调用您的Observable
。
public class SubscriberQueue<E> extends LinkedList<E> {
private Observable<E> mObservable = PublishSubscriber.create();
@Override
public boolean add(E e) {
if (super.add()) {
mObservable.onNext(e);
}
}
public Observable<E> getObservable() {return mObservable;}
}
// Test code
SubscriberQueue<Integer> myQueue = new SubscriberQueue<>();
myQueue.getObservable().subscribe(i -> System.out.println("Added: " + i));
myQueue.add(1);