当前位置: 代码迷 >> JavaScript >> Angular等待服务功能Ajax完成
  详细解决方案

Angular等待服务功能Ajax完成

热度:52   发布时间:2023-06-05 15:58:57.0

我想从控制器中获取$ 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未定义

实现此目的的方法是什么?

您需要返回 $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模块:

您的服务代码可能如下所示:

.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;
        }
    };
})
  相关解决方案