以角度取消资源请求

以角度取消资源请求

问题描述:

我是新来的角度,所以我需要详细的解决这个问题。我看到很多答案,但不是根据我的情况。以角度取消资源请求

我有一个服务:

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'); 
    } 
} 
+0

好吧。 一个问题我们如何使用cancelRequest()方法? – 2015-04-01 23:51:55

+0

这个方法可以在你的控制器的任何地方调用,你也可以将它添加到'$ scope'中,这样UI就可以有一个'ng-click'来允许用户取消请求。您也可以将'canceller'传递到'Service method'中以取消您的定制服务中的逻辑。很多选择/路线去 – 2015-04-01 23:55:57

+0

没错。谢了哥们。 – 2015-04-01 23:56:44