从服务中,将一个功能转换为两个不同的功能

时间:2015-03-12 23:27:45

标签: javascript angularjs

我在服务中有一个函数,它有很多行,我想把这个函数转换成两个不同的函数

这是函数

angular.module('capilleira.clickAndGambleMobile.services')
  .factory('SportsFactory', function($http, $q, AuthFactory, LocalForageFactory, LeaguesFactory, CONSTANT_VARS) {
    return {
      getSports: function(customer) {
        var defer = $q.defer(),
        _this = this;
    LocalForageFactory.retrieve(CONSTANT_VARS.LOCALFORAGE_SPORTS)
      .then(function(sports) {
        if (!_.isNull(sports)) {
          defer.resolve(sports);
        }else {
          $http.get(CONSTANT_VARS.BACKEND_URL + '/lines/sports/' + customer.agent)
            .success(function(sports) {
              sports = _.sortBy(sports, function(sport) {
                return sport.priority;
              });

              //THIS THE PART THAT I WANT TO MOVE FROM HERE

              _this.getSportChecked(customer).then(function(sportChecked) {
                var sportIds = _.pluck(sports, 'id'),
                    intersectedSports = _.intersection(sportIds, sportChecked.sport);
                if (sports.length) {
                  sports = _.map(sports, function(sport) {
                    sport.checked = !_.includes(intersectedSports, sport.id);
                    return sport;
                  });
                }else {
                  AuthFactory.logout();
                }
              });
              LocalForageFactory.set(CONSTANT_VARS.LOCALFORAGE_SPORTS, sports);
              defer.resolve(sports);
            })
            .error(function(err) {
              defer.reject(err);
            });
        }
      });
    return defer.promise;
  }
});

这是我到目前为止所得到的但我收到错误未定义运动

  getSports: function(customer) {
    var defer = $q.defer(),
    _this = this;

    LocalForageFactory.retrieve(CONSTANT_VARS.LOCALFORAGE_SPORTS)
      .then(function(sports) {
        if (!_.isNull(sports)) {
          defer.resolve(sports);
        }else {
          $http.get(CONSTANT_VARS.BACKEND_URL + '/lines/sports/' + customer.agent)
            .success(function(sports) {
              sports = _.sortBy(sports, function(sport) {
                return sport.priority;
              });
              // HERE I AM CALLING THE NEW FUNCTION
              _this.intersectedSportsChecked(customer);

              LocalForageFactory.set(CONSTANT_VARS.LOCALFORAGE_SPORTS, sports);
              defer.resolve(sports);
            })
            .error(function(err) {
              defer.reject(err);
            });
        }
      });
    return defer.promise;
  },

  // HERE IS THE NEW FUNCTION
  // UPDATED

  intersectedSportsChecked: function(customer) {
    var _this = this,
        defer = $q.defer(),
        rejection = function(err) {
          defer.reject(err);
        };

    _this.getSports(customer).then(function(sports) {
      _this.getSportChecked(customer).then(function(sportChecked) {
        var sportIds = _.pluck(sports, 'id'),
            intersectedSports = _.intersection(sportIds, sportChecked.sport);
        if (sports.length) {
          sports = _.map(sports, function(sport) {
            sport.checked = !_.includes(intersectedSports, sport.id);
            return sport;
          });
        }else {
          AuthFactory.logout();
        }
      });
    }, rejection);
  },

所以,我在这里错过了什么?

0 个答案:

没有答案