2016-07-08 4 views
2

Wie erstelle ich in RxJava ein Objekt (Zukunft), das von einem anderen Ort aus abgeschlossen wird, aber ich möchte ein Observable an einen Kunden zurückgeben?RxJava: Wie kann man von einem anderen Ort aus beobachtbar gemacht werden?

class DeferredAction { 
    private final CompletableFuture<String> future; 
    private final Observable<String> observable; 
    public DeferredAction() { 
     future = new CompletableFuture<>(); 
     observable = Observable.from(future); 
    } 

    public Observable<String> observe() { 
     return observable; 
    } 

    public void complete(Stirng value) { 
     future.complete(value); 
    } 
} 

Ist das der richtige Weg? Zweite Frage: Wie kann ich mehrere Abonnenten auf diese Observable bekommen? Im Moment sehe ich, dass nur ein Abonnent arbeitet.

Antwort

2

Das sollte funktionieren, obwohl Sie von PublishSubject sollten sich bewusst sein, welche ein beobachtbares und ein Beobachter beide ist so können Sie dies tun:

PublishSubject<String> subject = PublishSubject.create(); 
subject.take(10).subscribe(sub1); 
subject.last().subscribe(sub2); 
subject.onNext("boo"); 
subject.onCompleted(); 

Wie Sie auch sehen können, dieses Muster mehrere Teilnehmer unterstützt.

Verwandte Themen