【发布时间】:2016-09-01 22:18:13
【问题描述】:
我已经尝试了几件事,但在前一个请求完成之前调用该函数时似乎无法取消 http 请求。我正在使用 1.5.7,每次执行 $scope.glsuggested 时,我都想取消任何挂起的 glsuggested.get() 请求,尝试了一些方法来拒绝 $q.defer 但没有运气。
这是我得到的:
// Controller.
export class BudgetController {
constructor ($scope, $q, $timeout, $log, glbudget, glsuggested) {
'ngInject';
$scope.glsuggested = function(cat) {
var _getsuggested = glsuggested.get(cat);
_getsuggested.then(function(data) {
$scope.glproducts = data;
}, function(error) {
$scope.budgetdetails = 'error';
$log.log(error);
});
};
}
}
// Service
export class GlsuggestedService {
constructor ($http, $q, $rootScope, $log) {
'ngInject';
this.$http = $http;
this.$q = $q;
this.$rootScope = $rootScope;
this.$log = $log;
}
get(category) {
var defer = this.$q.defer();
var headers = {
'Access-Control-Allow-Origin': '*',
'Content-Type': 'application/json'
};
var req = this.$http({
method: 'GET',
headers: headers,
url: this.$rootScope.apiurl + '/products/recommend/' + category,
timeout: defer.promise
});
var _log = this.$log.log;
req.success(function(data) {
_log('success!', data, data.id);
return defer.resolve(data);
});
req.error(function(data) {
_log('error!', data);
return defer.reject('error');
});
return defer.promise;
}
}
【问题讨论】:
标签: angularjs