Angular2 Zusammenführen von observablen

Ich habe Probleme dabei mit manchen observablen. Ich kann nicht scheinen, um zwei
observablen zu Ort schön zusammen. Sie funktioniert gut auf Ihre eigenen, aber ich
müssen beide Werte.

db.glass.subscribe( ( glass: GlassData[] ): void => {
  console.log( glass ); //This prints
});

db.cassette_designs.subscribe( ( cassettes: CassetteData[] ): void => {
  console.log( cassettes ): //This prints
});

Nicht alle so vertraut mit den observablen, die erste Sache, die ich versuchte, war
Schachtelung Ineinander, aber das innere scheint nicht, etwas zu tun.

db.glass.subscribe( ( glass: GlassData[] ): void => {
  console.log( glass ); //This prints

  db.cassette_designs.subscribe( ( cassettes: CassetteData[] ): void => {
    console.log( cassettes ): //This doesn't
  });
});

Dieser schien ein wenig albern zu sein, so suchte ich auf Google, um zu sehen, ob es eine
eine bessere Möglichkeit zur Vereinbarkeit von observablen und es stellt sich heraus, es sind ein paar. Ich versuchte
zip und forkJoin da sahen Sie die die meisten mögen, was ich tun wollte, aber
nichts würde funktionieren, entweder mit Ihnen.

Observable.zip( db.cassette_designs, db.glass, ( cassettes: CassetteData[], glass: GlassData[] ): void => {
  console.log( cassettes ); //doesn't print
  console.log( glass     ); //doesn't print
});

Observable.forkJoin( [ db.cassette_designs, db.glass ] ).subscribe( ( data: any ): void => {
  console.log( data ); //doesn't print
});

Es könnte so etwas einfaches bin ich nicht aufrufen der Funktionen korrekt, aber
Ich hätte gedacht, ich würde Sie irgendeine Art von Warnung oder Fehler an einem gewissen Punkt. tsc
haben kein problem mit dem code und ich bekomme keine Nachrichten im Entwickler
die Konsolen entweder Chrome oder Firefox.

Update

Ich habe versucht combineLatest, aber es immer noch nicht zeigen alles in der Konsole. Ich muss etwas fehlen, aber ich bin mir nicht sicher, was. Sie arbeiten individuell.

Observable.combineLatest( db.cassette_designs, db.glass, ( cassettes: CassetteData[], glass: GlassData[] ): void => {
  console.log( cassettes ); //doesn't print
  console.log( glass     ); //deson't print
});

Die observablen werden in der folgenden Weise:

...

public Listen( event: string ): Observable<Response>
{
  return new Observable<Response>( ( subscriber: Subscriber<Response> ): Subscription => {
    const listen_func = ( res: Response ): void => subscriber.next( res );

    this._socket.on( event, listen_func );

    return new Subscription( (): void =>
      this._socket.removeListener( event, listen_func ) );
  });
}

...

Dann eigentlich auf die observablen, die ich senden Sie eine hören für Antworten auf die jeweilige Veranstaltung. z.B.

...

public cassette_designs: Observable<CassetteData[]>;

...

this.cassette_designs = _socket.Listen( "get_cassette_designs" )
    .map( ( res: Response ) => res.data.data );
  • SO neugierig, was Ihr Projekt ist! Kassetten und Glas, und Sie sind alle zusammen spielen! Liebe es!
  • Es wurde ein online-tool, erlaubt dem Anwender die Gestaltung der Türen.
InformationsquelleAutor Hector | 2016-07-14
Schreibe einen Kommentar