2016-06-26 13 views
1

Ich habe zwei Rxjs Observables basierend auf asynchronen FileReader-Operationen. Die Abonnements auf jedem von ihnen abgeschlossen einzeln, aber mein Versuch, forkJoin sie führt nie seine .subscribe Methode. Klar habe ich es falsch eingerichtet; her der Code:rxjs forkjoin erfüllt nicht

let observe1 = this.Service1.parsedResponse$; 
let observe2 = this.Service2.parsedResponse$; 

observe1.subscribe((data) => { 
    console.log('subscription 1', data); // this executes 
}); 

observe2.subscribe((data) => { 
    console.log('subscription 2', data); // this executes 
}); 

let observeJoined = Observable.forkJoin(observe1, observe2); 

observeJoined.subscribe((data: Object[]) => { 
    console.log('are we forkjoined?', data); // never happens 
}); 

Was ich suche im Idealfall nur zwei Objekte (data1, Daten2); Sie müssen nicht zu einem Ergebnis kombiniert werden. Ich muss nur wissen, dass ich beide habe, bevor ich fortfahre. Vielen Dank!

+1

'Observable.forkJoin (observe1, observe2)' ziehen Sie in 'Observable' oder benötigen Sie' Rx.Observable'? Seit was du "sollst" soll funktionieren. – subhaze

+0

Sehen Sie das gleiche Verhalten, haben Sie das irgendwie behoben? – koenmetsu

+0

Verstanden. Verwenden Sie das Beispiel aus den ngDocs, wo das Observable nicht immer abgeschlossen ist. ForkJoin wird nur ausgeführt, wenn es abgeschlossen ist. – koenmetsu

Antwort

0

Versuchen Sie folgendes:

var source = Rx.Observable.forkJoin(
this.Service1.parsedResponse$, 
this.Service2.parsedResponse$ 
); 

var subscription = source.subscribe(
    function (x) { 
    console.log('Next: %s', x); 
    }, 
    function (err) { 
    console.log('Error: %s', err); 
    }, 
    function() { 
    console.log('Completed'); 
    }); 
Verwandte Themen