javascript - tutorial - AngularJS: asigna datos de $ http.get a la variable
promise http (2)
Intento asignar datos de $ http.get a variable en mi controlador.
$http.get(URL).success(function (data) {
$scope.results = data;
console.log(''results in $http.get :''+ $scope.results);
});
console.log(''results after http.get''+ $scope.results);
Los primeros datos de impresión de log de consola de get. Después de $ http.get (url) .success $ scope.results se imprime como indefinido.
Esto es porque $http.get
es asincrónico. Por lo tanto, su código no se retendrá hasta que la solicitud ajax se complete, sino que ejecutará el resto del código. Por lo tanto, su segundo console.log
se ejecutará antes de que se complete la solicitud de ajax. En este punto, no hay una variable de ámbito llamada $scope.results
, que se define solo después de que se complete la solicitud, por eso imprime undefined
. Su primer console.log
se imprimirá solo después de que $http
ajax finalice con éxito, en este punto tiene $scope.results
que se asigna a los data
provienen del back-end.
$http
es una función asynchronous
. Vuelve al instante sin embargo, devuelve una promise
no es un resultado real. Cuando se completa la onsuccess
se llama al onsuccess
.
El segundo (el que está fuera de la llamada) console.log
ejecuta antes de que $http
regrese.