2016-06-20 7 views
1

Ich lerne rxjs. Angenommen, ich habe ein Array von Wert:Wie erstellt man einen Stream, der nur dann einen Wert ausgibt, wenn ein anderer Stream einen Wert ausgibt?

[12, 23, 34, 56, 78, 99] 

Ich möchte einen Strom A$ der oben genannten Werte zu schaffen, aber es nicht emittieren eine Werte nach dem anderen sofort, stattdessen sollte es Wert emittieren warten nur wenn ein anderer Strom B$ einen Wert ausgibt.

+0

Woher würde es Daten bekommen? – zerkms

+0

einfach nur Array manuell definiert, nicht von Ajax Anruf oder andere Art von asynchronen Operation. –

+0

http://rxmarbles.com/#sample? – zerkms

Antwort

4

Sie haben mehrere Möglichkeiten:

  • Verwendung sample, wie in den Kommentaren zu Ihrer Frage erwähnt. Dies bedeutet, dass Sie keinen Zugriff auf den von B$ ausgegebenen Wert haben.
  • Verwenden Sie combineLatest/zip, wenn Sie den von Ihrem Stream B$ mitgeführten Wert und einige zusätzliche Semantik verwenden möchten. Zum Beispiel A$.combineLatest(B$, function (a,b){...})
  • withLatestFrom, aber wie folgt aus: B$.withLatestFrom(A$, function (b,a){...}

diese Optionen haben alle etwas andere Semantik, so sie mit Bedacht wählen.

Verwandte Themen