2016-05-03 12 views
0

Ich habe den folgenden Code:

var $pid = 1;  
$scope.records = []; 

DBService.getUserById($pid) 

    .then(function(data) { 
    $scope.records = data; 
    console.log("OUTSIDE",$scope.records); // Shows [Object, Object, Object, Object, Object, Object] 
}); 
console.log("OUTSIDE:",$scope.records); // // Shows [] 

Warum ist das letzte Protokoll leer? Und wie bekomme ich die Callback-Daten innerhalb meiner $ Scope-Variable?

Antwort

2

Das letzte Protokoll befindet sich außerhalb Ihrer then-Funktion und tritt sofort auf, bevor der Serviceaufruf abgeschlossen wurde.

+0

Danke für Ihre Antwort. Ich weiß, dass es asynchron ist. Aber wie warte ich auf den Anruf am Ende und speichere die Daten in meinem $ scope? – MarcJohnson

+0

Was Sie in der then-Funktion tun, ist dafür richtig. Wenn Sie nach dem Abrufen der Daten noch weitere Dinge benötigen, können Sie diesen Code auch innerhalb der then-Funktion aufrufen. –

+0

können Sie bitte ein Beispiel posten? Ich möchte warten, bis der Aufruf beendet ist, und dann das Ergebnis der Variablen zuweisen – MarcJohnson