以角度取消资源请求
问题描述:
我是新来的角度,所以我需要详细的解决这个问题。我看到很多答案,但不是根据我的情况。以角度取消资源请求
我有一个服务:
function ticketService($resource, globals) {
return $resource(globals.API_URL+'/tickets/:id', {id: '@id'}, {
update: {method: 'PUT'}
});
}
现在我需要在一个新的调用,以取消先前的呼叫。我如何在这里使用timeout参数?
在控制器即时调用这样的这项服务:
ticketService.get({group_by: type}, function(data) {
.
.
.
.
});
我需要怎么改变我的服务和控制器。
谢谢。
答
这个例子是这个前面的*问题应该适用于你的问题。 $resource
支持Angular为其承诺系统提供的timeout
功能。
How to cancel an $http request in AngularJS?
var canceller;
function ticketService($resource, globals) {
canceller = $q.defer();
return $resource(globals.API_URL + '/tickets/:id', {
timeout: canceller.promise,
id: '@id'
}, {
update: {method: 'PUT'}
});
}
function cancelRequest() {
if (canceller) {
// You could also use a $timeout timer to cancel it
canceller.resolve('cancelled');
}
}
好吧。 一个问题我们如何使用cancelRequest()方法? – 2015-04-01 23:51:55
这个方法可以在你的控制器的任何地方调用,你也可以将它添加到'$ scope'中,这样UI就可以有一个'ng-click'来允许用户取消请求。您也可以将'canceller'传递到'Service method'中以取消您的定制服务中的逻辑。很多选择/路线去 – 2015-04-01 23:55:57
没错。谢了哥们。 – 2015-04-01 23:56:44