2016-05-23 4 views
1

Ich glaube, ich irgendeine Art von Versprechen Kette benötigen, aber die Syntax entzieht sich mich ...Angular 2 - Zwei Service erfordert zweites Ergebnis erster

Innerhalb derselben Komponente:

Ich rufe:

this.somethingService.getSomethings().then(somethings => this.somethings = somethings); 

Dann muss ich nennen: ich

this.otherService.getOthers(this.somethings).then(others => this.others = others); 

im zweiten Service-Aufruf das Ergebnis o bin mit f der erste, der Aggregatfunktionen auf seinem Inhalt ausführt, aber leer ist, wenn der zweite Aufruf erfolgt, daher der zweite Dienst leer zurückkehrt.

Wie kann ich den zweiten Dienst warten, bis das erste Versprechen gelöst wurde.

Thanx

Steve

Antwort

1

Sie können Kette verspricht diese Art und Weise:

this.somethingService.getSomethings().then(somethings => { 
    this.somethings = somethings; 
    return this.otherService.getOthers(somethings); 
}).then(others => { 
    this.others = others; 
}); 

Der zweite Rückruf wird das Ergebnis der Versprechen kehrt durch den ersten Rückruf erhalten.

+0

Danke für die schnelle Antwort, das ist kein Fehler - aber this.somethings ist leer ??? – Steve

+0

Oups. Es gab einen Tippfehler in meiner Antwort: 'etwas' anstelle von 'this.etwas '. Ich aktualisierte es ... –

+1

OK Besser, Dienst zwei gibt jetzt berechnete Werte zurück, jedoch ist meine Ansicht aufgrund eines * ngIf = "somethings.length> 0" leer - es denkt immer noch, dass es ein leeres Array ist. – Steve

Verwandte Themen