Javascript 如何检查服务';服务器响应是否包含正确的数据?

Javascript 如何检查服务';服务器响应是否包含正确的数据?,javascript,angularjs,metaprogramming,Javascript,Angularjs,Metaprogramming,我使用服务与服务器通信以请求数据,并将它们保存在另一个文件中,因此看起来是这样的(而且更易于阅读): 然后我从控制器给他们打电话: ServiceController.$inject = ['dataService1']; function testServiceController(dataService) { return dataService.then(function(data) { }; } 简单明了 无论如何,我需要服务器的每个服务的响应具有适当的数据结构,并且

我使用服务与服务器通信以请求数据,并将它们保存在另一个文件中,因此看起来是这样的(而且更易于阅读):

然后我从控制器给他们打电话:

ServiceController.$inject = ['dataService1'];
function testServiceController(dataService) {
    return dataService.then(function(data) {
    };

}
简单明了

无论如何,我需要服务器的每个服务的响应具有适当的数据结构,并且我需要处理它。我通过将服务作为工厂的对象调用来实现,在工厂中我检查服务响应的数据结构,因此代码如下所示:

var app_services = angular.module('app.services', [])
    .factory('serviceFactory', serviceFactory)
    .service('dataService', getService);

getService.$inject = ['serviceFactory'];

function getService(serviceFactory) {
var request = new ServiceFactory('api/datas')
return request.get();
}

serviceFactory.$inject = ['$http'];

function serviceFactory($http) {

var serviceObject = function(address) {
    this.address = address;
};

serviceObject.prototype.get = function(){
    return $http.get(this.address)
    .then(this.getComplete)
    .catch(this.getFailed);
}; 

       serviceObject.prototype.getComplete = function (response) {
            var data = response.data;

            if ((data.error !== '0' || !data.msg.length > 0)) {
                if (data.error !== '') {
                    throw new Error();
                } else if (data.msg == '' || !data.msg.length > 0) {
                    throw new Error();
                }
            }
            else {
                return data;
            }

        };

        serviceObject.prototype.getFailed = function (error) {
            console.log('Something went wrong!');
        };

     return serviceObject;     
}
这是一个好的解决方案吗?或者我可以用另一种更好/正确的方法来做吗?我知道angular的方法
.services('getService',getService)
将提供该函数的一个实例。换句话说
新的getService
但我不知道嵌套
var请求是否=新服务工厂('/api/address')
直接有任何意义,或者它是否会降低代码的可读性(好吧,对我来说,它是易读的,但我想提高自己作为一名程序员,所以我需要参考一些东西:P)


当然,代码在原始文件中看起来有点不同,但在复制粘贴后,它丢失了原始缩进。

我将从缩进开始;)你的代码在我看来还行@leanansith,不过我可以想出一些方法来整理你的代码。。。供人阅读
var app_services = angular.module('app.services', [])
    .factory('serviceFactory', serviceFactory)
    .service('dataService', getService);

getService.$inject = ['serviceFactory'];

function getService(serviceFactory) {
var request = new ServiceFactory('api/datas')
return request.get();
}

serviceFactory.$inject = ['$http'];

function serviceFactory($http) {

var serviceObject = function(address) {
    this.address = address;
};

serviceObject.prototype.get = function(){
    return $http.get(this.address)
    .then(this.getComplete)
    .catch(this.getFailed);
}; 

       serviceObject.prototype.getComplete = function (response) {
            var data = response.data;

            if ((data.error !== '0' || !data.msg.length > 0)) {
                if (data.error !== '') {
                    throw new Error();
                } else if (data.msg == '' || !data.msg.length > 0) {
                    throw new Error();
                }
            }
            else {
                return data;
            }

        };

        serviceObject.prototype.getFailed = function (error) {
            console.log('Something went wrong!');
        };

     return serviceObject;     
}