나는 observeable을 scan
연산자로 변환하므로 항상 현재 값과 이전 값 (또는 초기 값)을 기준으로 값을 방출합니다.RxJava의 스캔 연산자가 여러 구독자간에 상태를 유지할 수 있습니까
Subject<String> subject = PublishSubject.create();
Observable<String> observable = subject.scan("zero", (a, b) -> a + ", " + b);
그러면 첫 번째 관찰자가 구독하고 방출 된 모든 값을 인쇄 한 다음 일부 구독 취소 이후에 인쇄합니다.
Disposable first = observable.subscribe(System.out::println); // "zero"
subject.onNext("one"); // "zero, one"
first.dispose();
나중에 다른 가입자는 구독 : 당신이 볼 수 있듯이
Disposable second = observable.subscribe(System.out::println); // "zero"
subject.onNext("two"); // "zero, one"
second.dispose();
, 각 관찰자 먼저 이전이 사라 가입 할 때 방출되는 초기 값과 값으로 공급된다. 내가 모든 구독을 통해 scan
연산자의 내부 상태를 유지하고 달성하기 위해 싶습니다 RxJava에서이 문제에 대한 해결책이
Disposable first = observable.subscribe(System.out::println); // "zero"
subject.onNext("one"); // "zero, one"
first.dispose();
Disposable second = observable.subscribe(System.out::println); // "zero, one"
subject.onNext("two"); // "zero, one, two"
second.dispose();
있습니까?
모든 구독자가 처음부터 모든 이벤트를 수신하도록 하시겠습니까? – akarnokd
아니요, 구독자가 구독 할 때 방출되는 이벤트 만 받기를 원하지만 모든 이전 값을 기반으로이 이벤트의 값을 원합니다. –
이 예제와 같이 'observable'이라는 Observable을 멀티 캐스트하기 만하면됩니다 : http://blog.danlew.net/2016/06/13/multicasting-in-rxjava/. 당신은 동시성이 있다면, 나는 주제를 onewext serialize하는 것이 좋습니다 것입니다. –