Я пытаюсь получить разрешенный объект обещания после прерывания вызова REST (используя {timeout: canceller.promise}), но я не могу получить разрешенный объект обещания.обработка отмененных HTTP-запросов - angularjs
завод:
angular.module('RestModule').factory('abc', function ($http, $rootScope) {
var canceller = $q.defer();
$rootScope.$on('CANCEL_REQUESTS', function() {
canceller.resolve({'isAborted': true});
});
return {
getDetails: function() {
return $http.get('/test/testREST', {timeout: canceller.promise}).then(function (data) {
return httpData.data;
});
}
});
контроллер:
.controller('testCtrl', function (abc, $rootScope) {
abc.getDetails().then(function (data) {
// success call back
}, function (error) {
console.log(error.isAborted);
});
$rootScope.$emit('CANCEL_REQUESTS');
});
Здесь в вызове ошибки назад я не получаю объект тайм-аут обещание (isAborted: истина). error.isAborted не определено.
Не следует ли вызывать 'canceller.reject' вместо' canceller.resolve', если вы ожидаете этого результата в функции обработчика ошибок? – andrean
Я сделал это изначально, но в этом случае он никогда не приходил к обработчику ошибок. Только если я разрешаю управление, он достигает обработчика ошибок. Кроме того, использование canceller.resolve по-прежнему достигает обработчика ошибок –