2017-01-10 2 views
0

Ich versuche, eine Liste von Observablen entweder parallel oder in Reihe laufen laufen (keine Rolle spielt, ich möchte, dass sie nur laufen tatsächlich), so etwas wie so:Reißverschluss Mit allen Observablen

 Rx.Observable.zip([ 

     Rx.Observable.timer(100), 
     Rx.Observable.timer(200), 
     Rx.Observable.timer(205) 

    ]) 
     .do(function (val) { 
      console.log('val =>', val); 
     }) 
     .subscribe() 

die Logging-Anweisung wird nie ausgeführt und ich weiß nicht warum. Ich habe sogar versucht, eine concatAll für ein gutes Maß zu werfen.

 Rx.Observable.zip([ 

      Rx.Observable.timer(100), 
      Rx.Observable.timer(200), 
      Rx.Observable.timer(205) 

     ]) 
     .concatAll() 
      .do(function (val) { 
       console.log('val =>', val); 
      }) 
      .subscribe() 

Wer weiß, was los ist?

Was ich tun möchte, ist die folgende, die tatsächlich funktioniert:

return Rx.Observable.range(0, count) 
     .map(function (i) { 
      return q.enq('foo ' + i); 
     }) 
     .concatAll() 
     .subscribe() 

, aber ich versuche, herauszufinden, wie das gleiche zu tun mit Reißverschluss oder fusionieren, wie ich oben oben versucht.

+0

I Rx auch versucht. Observable.merge() aber das ein Array zurückgab, kein Observable, obwohl die Dokumente sagten, dass es ein Observable zurückgeben würde. – Olegzandr

Antwort

3

zip nimmt eine variable Anzahl von Observablen; es nicht ein Array nehmen:

Rx.Observable.zip(
    Rx.Observable.timer(100), 
    Rx.Observable.timer(200), 
    Rx.Observable.timer(205) 
) 
.do(function (val) { 
    console.log('val =>', val); 
}) 
.subscribe(); 

Wenn Sie jedoch eine Reihe von Observablen in einer Variablen haben, mit zip das Array verwenden Sie seine Elemente ausbreiten könnte:

const array = [ 
    Rx.Observable.timer(100), 
    Rx.Observable.timer(200), 
    Rx.Observable.timer(205) 
]; 
Rx.Observable.zip(...array) 
.do(function (val) { 
    console.log('val =>', val); 
}) 
.subscribe(); 
+0

aye yi yi, lass es mich versuchen, danke, weißt du, warum die Zusammenführung bei zip nicht funktionieren würde? Vielleicht merge auch kein Array zusammen ... – Olegzandr

+0

Aus dem Speicher nehmen die meisten eine variable Anzahl beobachtbarer Argumente. – cartant

Verwandte Themen