2016-03-30 15 views

cevap

7

ederiz. ..) aslında hemen Gözlemlenebilir oluşturur.

public final static <T> Observable<T> create(OnSubscribe<T> f) { 
     return new Observable<T>(hook.onCreate(f)); 
    } 

erteleme (...), gözlemlenebilir döndüren Fabrika fonksiyonunu (Konu, vb ...) kabul eden OnSubscribeDefer ile sarar ve gözlemlenebilir oluşturur yalnızca her abone için yeni Gözlenebilir abone abone. Eğer/Zaten bir gözlemlenebilir döndürür yaratan şey bulunca defer iyidir, ama sen bunun olabilmesi sürecine istemiyorum:

public final static <T> Observable<T> defer(Func0<Observable<T>> observableFactory) { 
    return create(new OnSubscribeDefer<T>(observableFactory)); 
} 

here

7

Yani ayrım görünüyor biraz daha ayrıntılı olarak görün aboneliğe kadar. Bir async işlemini elle sarmanız ve gözlenebilir bir belge oluşturmanız gerektiğinde

create iyidir. Bu oluşturma, aboneliğe kadar numaralı ertelenmiştir.

defer gözlemlenebilir dizilerin ertelenmiş bir bileşim sağlayan bir operatörü:

Diğer bir deyişle.

create, gözlemlenebilir dizinin özel bir uygulamasıdır (oluşturma işlemi aboneliğe kadar ertelenir).

Yani bazı sonuçlar/değerden bir Observable oluşturmak için just kullanabilir bir durum varsa veya isteğin bir Observable döndüren bir ağ API katmanı var, ama o istek başlaması istemiyorsanız aboneliğe kadar. Bu senaryolar için defer iyi olurdu. Eğer bir Observable arayüz gereken bir ağ API değil dönüş talebi için bir Observable yaptığı katmanı, ancak varsa

, sen create kullanabilirsiniz. Yine de, abone oluncaya kadar Observable dizisi oluşturulmayacaktır. Abonelikten bağımsız olarak o ağ çağrısının başlamasını istemişseniz, Subject gibi farklı bir mekanizma kullanırsınız.