У меня есть контроллер, который выполняет HTTP-запрос.
Этот запрос может занять от 2 секунд до 4 минут, чтобы вернуть некоторые данные.
Я добавил кнопку, чтобы пользователи должны были щелкнуть, чтобы отменить запрос, если поиск слишком длинен для завершения.Отмена предложения по угловому сервису
Контроллер:
$scope.search = function() {
myFactory.getResults()
.then(function(data) {
// some logic
}, function(error) {
// some logic
});
}
Услуги:
var myFactory = function($http, $q) {
return {
getResults: function(data) {
var deffered = $q.dafer();
var content = $http.get('someURL', {
data: {},
responseType: json
)}
deffered.resolve(content);
returned deffered.promise;
}
}
}
нажатия кнопок:
$scope.cancelGetResults = function() {
// some code to cancel myFactory.getResults() promise
}
Как я могу impleme nt нажмите кнопку, чтобы отменить обещание myFactory.getResults()
?
Нужна ли вам ** ручная ** отмена или что-то с тайм-аутом соответствует вашим потребностям? – Mistalis
@Mistalis - руководство пользователя, так как пользователи могут либо ждать запроса до таймаута, либо нажать «Отмена» –
Возможный дубликат [Как отменить запрос $ http в AngularJS?] (Http://stackoverflow.com/questions/13928057/how -to-cancel-an-http-request-in-angleularjs) – Liam