Skip to content
This repository was archived by the owner on Apr 12, 2024. It is now read-only.

Commit 9f7ed38

Browse files
committed
refactor(ngResource): handle success and error callbacks in the same promise resolution
1 parent e6c1449 commit 9f7ed38

File tree

2 files changed

+9
-8
lines changed

2 files changed

+9
-8
lines changed

src/ngResource/resource.js

+8-6
Original file line numberDiff line numberDiff line change
@@ -697,18 +697,14 @@ angular.module('ngResource', ['ng']).
697697
response.resource = value;
698698

699699
return response;
700-
}, function(response) {
701-
(error || noop)(response);
702-
return $q.reject(response);
703700
});
704701

705-
promise = promise.finally(function(response) {
702+
promise = promise.finally(function() {
706703
value.$resolved = true;
707704
if (!isInstanceCall && cancellable) {
708705
value.$cancelRequest = angular.noop;
709706
timeoutDeferred = httpConfig.timeout = null;
710707
}
711-
return response;
712708
});
713709

714710
promise = promise.then(
@@ -717,7 +713,13 @@ angular.module('ngResource', ['ng']).
717713
(success || noop)(value, response.headers);
718714
return value;
719715
},
720-
responseErrorInterceptor);
716+
responseErrorInterceptor || error ?
717+
function(response) {
718+
(error || noop)(response);
719+
(responseErrorInterceptor || noop)(response);
720+
return response;
721+
}
722+
: undefined);
721723

722724
if (!isInstanceCall) {
723725
// we are creating instance / collection

test/ngResource/resourceSpec.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -1052,8 +1052,7 @@ describe("basic usage", function() {
10521052
it('should call the error callback if provided on non 2xx response', function() {
10531053
$httpBackend.expect('GET', '/CreditCard/123').respond(ERROR_CODE, ERROR_RESPONSE);
10541054

1055-
var ccs = CreditCard.get({id:123}, callback, errorCB);
1056-
ccs.$promise.then(noop, noop);
1055+
CreditCard.get({id:123}, callback, errorCB);
10571056
$httpBackend.flush();
10581057
expect(errorCB).toHaveBeenCalledOnce();
10591058
expect(callback).not.toHaveBeenCalled();

0 commit comments

Comments
 (0)