Angular等待Ajax完成服务功能

Angular wait for service function Ajax completed

本文关键字:服务功能 Ajax 等待 Angular      更新时间:2023-09-26

我想从我的控制器得到$http请求的结果。

这是我的服务:

.service('postService', function($http, apiUrl) {
    return {
        post: function(uri, params) {
            $http.post(apiUrl + uri, params).then(function(items) {                 
                    return items.data;
            });
        }
    };
})

这里是我在控制器中所做的:

var getData = postService.post('my_service_url', {id: 'test'});
getData.then(function(result) {
       $scope.data = result;
       console.log(data);
});

但是我发现了错误:

getData是undefined

如何做到这一点?

您需要返回 $http.post

return {
    post: function(uri, params) {
        return $http.post(apiUrl + uri, params);
    }
};

然后你可以连接你的then:

var getData = postService.post('my_service_url', {id: 'test'});
getData.then(function(result) {
       $scope.data = result;
       console.log(data);
});

试试angularjs的$q模块:

https://docs.angularjs.org/api/ng/service/美元q

你的服务代码可以像这样:

.service('postService', function($http, $q, apiUrl) {
    return {
        post: function(uri, params) {
            var deferred = $q.defer();
            $http.post(apiUrl + uri, params).then(function(items) {                 
                    deferred.resolve(items.data);
            }, function() {
              // error case
                    deferred.reject();
            });
            return deferred.promise;
        }
    };
})