Javascript 将一个功能转换为两个不同的功能
我在一个有很多行的服务中有一个函数,我想把这个函数转换成两个不同的函数 这就是函数Javascript 将一个功能转换为两个不同的功能,javascript,angularjs,Javascript,Angularjs,我在一个有很多行的服务中有一个函数,我想把这个函数转换成两个不同的函数 这就是函数 angular.module('capilleira.clickAndGambleMobile.services') .factory('SportsFactory', function($http, $q, AuthFactory, LocalForageFactory, LeaguesFactory, CONSTANT_VARS) { return { getSports: funct
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;
}
});
这是我到目前为止得到的,但我收到一个错误,体育运动没有定义
那么,我在这里遗漏了什么呢?体育在intersectedSportsChecked中不存在。它超出范围,我如何声明它?我做过体育运动;但仍然会出现同样的错误@elclanrs这是一样的,运动没有定义。您必须调用getSports并链接另一个承诺,并在回调中访问sports。@elclanrs您能帮我编写一段代码吗?另外,从LocalForageFactory中检索是否有可能返回未定义的?如果不为空,则表示正在解析运动。
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);
},