У меня есть служба, заявленная здесь:
(function() {
'use strict';
angular
.module('ngInterview.api.students')
.service('StudentsService', StudentsService);
StudentsService.$inject = ['$http'];
function StudentsService($http) {
/**
* Exposed functions
*/
this.getName = getName; // This function serves no purpose. It just here as an example.
this.getStudents = function() {
console.log("getting to the getStudents function");
return $http.get("http://il-resume-api.azurewebsites.net/api/students").then(function(res) {
console.log("getting data back");
console.log(res.data);
return res.data;
}, function(res) {
console.log("getting bad data");
console.log(res);
return res.data;
});
}
/**
* Implementations
*/
function getName() {
return 'studentsService';
}
}
})();
По какой-то причине мой код только доходит до "перехода к функции getStudents" и после этого не отвечает. Я попытался настроить пустой проект с $ http в контроллере, и он работает, он извлекает данные с конечной точки, но по какой-то причине эта служба как часть модуля не будет. И когда я console.log $ http, я получаю действительный объект, поэтому я не думаю, что это так.
Функция getStudents
возвращает $http.get
. Делая это, вы даете обещание тем, кто хочет вызвать функцию getStudents
. Если вы хотите увидеть свою регистрацию в действии, обработайте свою функцию соответственно, например:
Область управления
studentsService.getStudents().then(function() {
console.log("I expect to see my logs right above this log");
})
console.log("getting to the getStudents function");
Вы возвращаетесь из функции. Дополнительные распечатки на консоль будут выполняться только после завершения HTTP-запроса. Попробуйте вызвать http.get внутри тела, если функция и вернуть саму функцию.getStudents
как обещание? вернув$http
, вы должны использоватьthen
с вашейgetStudents
функционировать ожидать результата.