2016-11-17 3 views
1

ich Anforderung habe den zurückgegebenen Wert von Promise auf globale Variablen zu speichern, habe ich mit folgenden Weg-Hold-Flusskontrolle innerhalb Funktion, bis es vollständig alle Aufgabe: Angular2

this.getData().then(data => { 
    this.gloabalData = data;  
}); 
// Doing Operation with globalData 

Aber Problem versuchen ist, dass vor der Aktualisierung Wert von globalData mit Daten, es nimmt den Standardwert von globalData. Das bedeutet, dass die Steuerung vor der Verarbeitung der getData-Operation herunterfährt und den vorherigen Wert von globalData verwendet. Also, gibt es eine Möglichkeit, das Steuerelement in getData-Funktion zu halten, bevor es alle Aufgabe abgeschlossen ist?

Antwort

1

Dies ist einfach nicht möglich.

Wenn

// Doing Operation with globalData 

dort erreicht wird, ist kein data vorhanden

data => { 
this.gloabalData = data; 
} 

ist eine Funktion, die Sie then() passieren aufgerufen werden, wenn getData() mit einem Ergebnis abgeschlossen.

// Doing Operation with globalData 

wird loooooong ausgeführt (im Falle eines Server-Aufruf) vor getData() abgeschlossen ist.

Just do

this.getData().then(data => { 
    this.gloabalData = data;  
    // Doing Operation with globalData 
}); 

oder

this.getData().then(data => { 
    this.gloabalData = data;  
}).then(data => { 
// Doing Operation with globalData 
}); 
+0

thnx für Antwort, ich weiß, ich kann so tun, aber ich habe Anforderung die Global außerhalb zuzugreifen. – deen

+0

Die fügen nur eine Rückkehr vor 'this.getData()' hinzu und machen den '.then (data => ...)' Teil dort. –

+0

Kann ich den zurückgegebenen Wert in der Variable globalData speichern? – deen

Verwandte Themen