@faragly

Как отменить отправленные $http запросы в AngularJS?

Доброго времени суток всем! Есть 2 функции, одна отправляет $http запрос с командой начать выполнение, второй каждые 500 мс проверяет ход выполнения, то есть скрипт пошагового отображения выполнения. В success первого запроса (выполнено 100%) вывожу console.log('закончили выполнение');
Однако поле этого консольного сообщения проскакивают еще ответы со второй функции, которая проверяет ход выполнения.
После отправки первого запроса запускаю $interval
autoUpdate = $interval($scope.ajaxRequest, 500); а в success его отменяю
if (autoUpdate) $interval.cancel(autoUpdate);
Как убить отправленные $http запросы после того как ответ пришел?
  • Вопрос задан
  • 1503 просмотра
Решения вопроса 1
AMar4enko
@AMar4enko
В объекте config, который принимает $http, есть ключ timeout, который принимает либо непосредственно макс. время выполнения запроса в виде числа, либо promise, который при resolve отменяет запрос.
var cancel = $q.defer();
$http({..., timeout: cancel.promise});
cancel.resolve(); // Отменит выполнение запроса
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@dmitryKovalskiy
программист средней руки
Я правильно понимаю что вы хотите на веб-сервер отправить некий запрос, который отменит выполнение других ранее отправленных запросов? На уровне теории HTTP-запросов - НИКАК. На практике веб-сервер вообще не в курсе что один отдельно взятый запрос как-то связан с другими, ранее отправленными. Сколько по времени занимает обработка общего запроса? секунду-10-100?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы