以角度取消资源请求

时间:2015-04-01 23:36:07

标签: angularjs angularjs-service angular-promise angularjs-resource angularjs-timeout

我是角色的新手,所以我需要详细解决这个问题。我已经看到很多答案,但不是根据我的情况。

我有服务:

function ticketService($resource, globals) {
        return $resource(globals.API_URL+'/tickets/:id', {id: '@id'}, {
            update: {method: 'PUT'}
        });
    }

现在,我需要在进行新通话时取消之前的通话。我需要在这里使用超时参数吗?

在控制器即时通讯中调用此服务:

ticketService.get({group_by: type}, function(data) {
.
.
.
.
});

我需要如何改变我的服务和控制器。

感谢。

1 个答案:

答案 0 :(得分:3)

示例是此前的Stackoverflow问题应该适用于您的要求。 $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');
    }
}