为什么这个$ http请求无效?

时间:2016-08-02 05:54:54

标签: angularjs http service module iife

我在这里宣布了一项服务:

(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's 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时,我得到一个有效的对象,所以我不认为这是。

1 个答案:

答案 0 :(得分:1)

您的getStudents函数正在返回$http.get。通过这样做,您将承诺交给任何选择调用getStudents函数的人。如果您想要查看登录操作,请相应地处理您的功能,如下所示:

控制器范围

studentsService.getStudents().then(function() {
   console.log("I expect to see my logs right above this log");
})