Açıklaması şöyle
ÖrnekReplaySubject emits all the items of the Observable, regardless of when the subscriber subscribes.
Elimizde şöyle bir kod olsun
Çıktı olarak şunu alırız. Aslında bir anlamda Cold Observale'ın tüm çıktısı kaydediliyor ve kaydedilen şey tekrar en baştan oynatılıyor.ReplaySubject<Integer> pSubject = ReplaySubject.create();pSubject.onNext(0);pSubject.subscribe(it -> System.out.println("Observer 1 onNext: " + it),(Throwable error) -> { }, () -> {},on1 -> System.out.println("Observer 1 onSubscribe"));pSubject.onNext(1);pSubject.onNext(2);pSubject.subscribe(it -> System.out.println("Observer 2 onNext: " + it),(Throwable error) -> { }, () -> {},on1 -> System.out.println("Observer 2 onSubscribe"));pSubject.onNext(3);pSubject.onNext(4);
Yani ReplaySubject pahalı işlemleri bir şekilde cache'lemek için kullanılabilirObserver 1 onSubscribeObserver 1 onNext: 0Observer 1 onNext: 1Observer 1 onNext: 2Observer 2 onSubscribeObserver 2 onNext: 0Observer 2 onNext: 1Observer 2 onNext: 2Observer 1 onNext: 3Observer 2 onNext: 3Observer 1 onNext: 4Observer 2 onNext: 4
Örnek
Elimizde şöyle bir kod olsun
Çıktı olarak şunu alırızObservable<Integer> observable = Observable.range(1, 5).subscribeOn(Schedulers.io());//Record everytingReplaySubject<Integer> subject = ReplaySubject.create();observable.subscribe(subject);//Replay everythingsubject.subscribe(s -> System.out.println("subscriber one: " + s));//Replay everythingsubject.subscribe(s -> System.out.println("subscriber two: " + s));
subscriber one: 1subscriber one: 2subscriber one: 3subscriber one: 4subscriber one: 5subscriber two: 1subscriber two: 2subscriber two: 3subscriber two: 4subscriber two: 5
Hiç yorum yok:
Yorum Gönder