0
我想在中止REST调用(使用{timeout:canceller.promise})后获得已解析的promise对象,但我无法获取已解析的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 2014-08-28 07:05:41
我最初做了这件事,但在这种情况下它从来没有进入错误处理程序。只有当我解决控制权到达错误处理程序。 也使用canceller.resolve仍然到达错误处理程序 – 2014-08-28 07:13:46