我的服务方法如下:
this.myServiceFunction = function(){
var deferred = $q.defer();
$http({
method: 'GET',
url: 'domain/myendpoint'
})
.success(function(data){
deferred.resolve(data);
})
.error(function(data){
deferred.reject(data);
});
return deferred.promise;
};
我以下列方式在我的控制器中使用此方法:
$scope.myControllerFunction = function(){
myService.myServiceFunction().then(function(){
// Do things when promise resolves
});
};
我想在命令的另一个函数中取消上面的HTTP调用。我发现这个answer允许您通过对resolve()
返回的对象调用$q.defer()
方法来取消HTTP请求。但是在我的代码库中,这个对象永远不会在我的控制器中可用。
myService.myServiceFunction()
会返回从promise
返回的$q.defer()
对象。如何在我所拥有的范围内取消我的HTTP请求?
答案 0 :(得分:2)
以下回答了这个问题,没有原始代码的开销。
git pull origin master
但是,如果出于某种原因需要使用该模式,则可以使用以下命令:
this.myServiceFunction = function(){
this.canceler = $q.defer();
return $http({
method: 'GET',
url: 'domain/myendpoint',
timeout: this.canceler.promise
});
};
this.cancelServiceFunction = function() {
return this.canceler.resolve();
};