почему не работает этот запрос $ http?

0

У меня есть служба, заявленная здесь:

(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, я получаю действительный объект, поэтому я не думаю, что это так.

  • 0
    Сразу после console.log("getting to the getStudents function"); Вы возвращаетесь из функции. Дополнительные распечатки на консоль будут выполняться только после завершения HTTP-запроса. Попробуйте вызвать http.get внутри тела, если функция и вернуть саму функцию.
  • 0
    Вы getStudents как обещание? вернув $http , вы должны использовать then с вашей getStudents функционировать ожидать результата.
Теги:
module
http
service
iife

1 ответ

1

Функция getStudents возвращает $http.get. Делая это, вы даете обещание тем, кто хочет вызвать функцию getStudents. Если вы хотите увидеть свою регистрацию в действии, обработайте свою функцию соответственно, например:

Область управления

studentsService.getStudents().then(function() {
   console.log("I expect to see my logs right above this log");
})
  • 0
    Но я все еще должен получить свои console.logs, независимо от того, как контроллер обрабатывает это, правильно? Просто чтобы убедиться, что я поместил файл console.log в инструкцию контроллера .then, но я тоже ничего не получил. : /
  • 0
    Вы должны видеть журналы только тогда, когда функция обещала и вернула все, что должна была. Можете ли вы показать логику контроллера?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню