2017-05-23 3 views

Antwort

7

forkJoin arbeitet Brunnen, Sie müssen nur das Array von Arrays glätten:

const { Observable } = Rx; 

const s1$ = Observable.of([1, 2, 3]); 
const s2$ = Observable.of([4, 5, 6]); 

Observable 
    .forkJoin(s1$, s2$) 
    .map(([s1, s2]) => [...s1, ...s2]) 
    .do(console.log) 
    .subscribe(); 

Ausgang: [1, 2, 3, 4, 5, 6]

Plunkr Demo: https://plnkr.co/edit/zah5XgErUmFAlMZZEu0k?p=preview

+0

Vielen Dank, das hat für mich funktioniert !! –

+0

Gern geschehen;) – Maxime

1

Vielleicht könnten Sie diese anstelle von Array mit Liste tun:

var s1 = Rx.Observable.of(1, 2, 3); 
var s2 = Rx.Observable.of(4, 5, 6); 

und dann

Rx.Observable.merge(s1,s2).toArray().map(arr=>arr.sort()).su‌​scribe(x=>console.l‌​og(x)) 
+0

meine Quellen sind Arrays, also ist das keine Option für mich –

0

Gerade statt Observable.of Verwendung Observable.from, die ein Array als Argument nimmt und reemits alle ihre Werte:

var s1 = Observable.from([1, 2, 3]); 
var s2 = Observable.from([4, 5, 6]); 

s1.merge(s2).subscribe(val => { 
    console.log(val); 
}); 

Vielleicht statt merge Sie vielleicht concat bevorzugen, aber in Diese Situation mit einfachen Arrays wird die gleichen Ergebnisse geben.

Dies wird Ihnen geben:

1 
2 
3 
4 
5 
6 

Wenn Sie dies als ein einzelnes Array wollen Sie könnten auch toArray() Operator anhängen. Btw, könnten Sie das gleiche mit Observable.of erreichen, aber Sie müssten es mit Observable.of.call(...) nennen, die wahrscheinlich unnötig kompliziert ist und es einfacher ist, nur Observable.from() zu verwenden.

Verwandte Themen