我編碼ObservableList
根據PublishSubject
。每當客戶端將一個元素添加到此列表中時,觀察者將通過主題上的onNext
方法得到通知。單個Observable是否會按順序通知所有觀察者?
我已經編碼了兩個樣本觀察者並將它們訂閱到ObservableList
。我注意到通知是連續的並且被阻塞。因此,如果我有這兩名觀察員訂閱,則會發生以下情況:
- 觀察者將按照訂閱的相同順序收到通知。
- 如果觀察者阻塞,那麼只有當前一個觀察者結束其執行時才通知下一個觀察者。
我真的不在乎ID調用是連續的,但想了解爲什麼通知阻塞以及如何使它不被阻塞。
下面是ObservableList
package co.com.subjects.example;
import java.util.ArrayList;
import java.util.List;
import rx.Observable;
import rx.functions.Action1;
import rx.subjects.PublishSubject;
public class ObservableList<T>{
public String nombre;
protected final List<T> list;
protected final PublishSubject<T> onAdd;
public ObservableList(String nombre) {
this.list = new ArrayList<T>();
this.onAdd = PublishSubject.create();
this.nombre = nombre;
}
public void add(T value) {
list.add(value);
onAdd.onNext(value);
}
public Observable<T> getObservable() {
return onAdd;
}
}