Angular 服务:将响应分配给对象是不是一种不好的做法,还是应该只使用 solve

Angular services: is it bad practice to assign response to an object or should I only use resolve

本文关键字:solve 一种 响应 分配 服务 对象 是不是 Angular      更新时间:2023-09-26

我已经看到了这段代码,它对我有用,但我想知道在服务中创建一个对象是否是一种不好的做法 - 将其分配给这个对象,然后在 http get 方法的成功回调中将响应分配给对象。

.service("personDataService", function($http, $q) {
    var person = this;
    person.record = {};
    var endPoint = 'https://api.something.com';
    person.getInformation = function() {
      var defer = $q.defer();
      $http.get(endPoint)
        .success(function(response) {
          /*
          here i'm assigning response to person.record and also using resolve. 
          but is this bad practice to assign response directly to person?
          */
          person.record = response;
          defer.resolve(response);
        })
        .error(function(err, status) {
          defer.reject(err);
        })
      return defer.promise;
    }
return person;
}

然后在我的控制器代码中,我直接调用personDataService.record来检查它是否为空。

Object.keys(personDataService.record).length

直接使用 personDataService.album 是不是很糟糕?

最好不要将响应分配给对象以使用控制器内部的方法并将响应传递到那里。您要做的另一件事是删除已弃用的$http旧承诺方法成功和错误,并使用标准 then 方法。这是如何使用 then 方法的示例。

angular.module('starter')
.factory('services', services);
function services($http) {
        var services = {
            someService: someService,
        };
        return services;
        //someService service
        function someService() {
            var req = {
                method: 'GET',
                url: 'https://api.something.com',
                headers: {
                    'Accept' : 'application/json',
                    'contentType': "application/json"
                }
            };
            return $http(req);
        };
    }

然后从控制器调用服务,如下所示:

services.someService().then(
      function(response) {
      //do whatever is needed with the response
        console.log(response);
      },
      function (error) {
        console.log(error); 
      }
    );
相关文章: