2016-08-17 11 views
3

Observableの内容をObserverにコピーしたいと思います。オブザーバブルからオブザーバへのコピー

subscribe()に頼らずに、ObservableからObserverにイベントを手動でポンピングすることなく、これを達成する簡潔な方法はありますか?すなわち

var observer = new Subject(); 
    var observable = new Subject(); 

    observable.subscribe(i => observer.next(i), e => observer.error(e),() => observer.complete()) 

注:上記のコード例はTypeScriptです。

答えて

2

私はそのようにしている点はありません。複数のオブザーバーを1つに統合する予定ですか?そのための演算子があります:Observable.merge

マージを使用できない場合は、そうする最短の方法は、right version of subscribeを使用することです:

var observer = new Subject(); 
var observable = new Subject(); 

observable.subscribe(observer); 

EDIT

は、初期化コードは、以下のようになりますと仮定します

function initStream() { 
    var subject = new Subject(); 
    loadConfigurationCallback(config => { 
    const observable = createStreamBasedOnConfig(config); 
    observable.subscribe(subject); 
    }); 
    return subject; 
} 

この場合、loadConfiguration自体を返品させると、もっと簡単にすることができます

function initStream() { 
    return loadConfigurationObservable().flatMap(createStreamBasedOnConfig); 
} 
+0

Observable <>を直ちに返す必要があるメソッドがありますが、他の非同期操作が実行されるまで(設定のロードなど)、データの投入を開始できません。 – jwa

+0

@jwaだから、あなたはrxの難しい部分に会った。もう1つの解決策は、これらの非同期操作の結果を最初に観測可能なものにすることであり、そこから新たに得られた観測可能なものをflatMapすることです。 –

+0

私はあなたの提案を正しく理解していれば、これは私の最後のObservableでも非同期操作の結果を得ることを意味しますか?したがって、私は最終的なObservableストリームにそれらを望んでいないので、フィルタを追加する必要がありますか? – jwa

関連する問題