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