2

Я новичок в угловом, поэтому мне нужно детальное решение этого вопроса. Я видел много ответов, но не по моей ситуации.Отменить запрос ресурса в угловом

У меня есть сервис:

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

Теперь мне нужно отменить предыдущий вызов, когда новый вызов сделан. Как мне нужно использовать тайм-аут здесь?

В контроллере им вызывающих эту услугу, как это:

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

Как мне нужно изменить мое обслуживание и контроллер.

Спасибо.

ответ

3

Примером этого является предыдущий вопрос о Stackoverflow, который должен работать для вашего запроса. $resource поддерживает функцию 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()? –

+0

Этот метод можно назвать в любом месте вашего контроллера, вы также можете добавить его в '$ scope', чтобы пользовательский интерфейс мог иметь« ng-click », позволяющий пользователю отменить запрос. Вы также можете передать 'canceller' в« метод обслуживания »для логики для отмены в вашей пользовательской службе. Много вариантов/маршрутов, чтобы пойти –

+0

вправо. Спасибо друг. –