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

Commit e812b71

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

File tree

3 files changed

+11
-11
lines changed

3 files changed

+11
-11
lines changed

src/ngResource/resource.js

+8-6
Original file line numberDiff line numberDiff line change
@@ -701,19 +701,15 @@ angular.module('ngResource', ['ng']).
701701
response.resource = value;
702702

703703
return response;
704-
}, function(response) {
705-
(error || noop)(response);
706-
return $q.reject(response);
707704
});
708705

709-
promise = promise['finally'](function(response) {
706+
promise = promise['finally'](function() {
710707
value.$resolved = true;
711708
if (!isInstanceCall && cancellable) {
712709
value.$cancelRequest = angular.noop;
713710
$timeout.cancel(numericTimeoutPromise);
714711
timeoutDeferred = numericTimeoutPromise = httpConfig.timeout = null;
715712
}
716-
return response;
717713
});
718714

719715
promise = promise.then(
@@ -722,7 +718,13 @@ angular.module('ngResource', ['ng']).
722718
(success || noop)(value, response.headers);
723719
return value;
724720
},
725-
responseErrorInterceptor);
721+
responseErrorInterceptor || error ?
722+
function(response) {
723+
(error || noop)(response);
724+
(responseErrorInterceptor || noop)(response);
725+
return response;
726+
}
727+
: undefined);
726728

727729
if (!isInstanceCall) {
728730
// we are creating instance / collection

test/ng/animateRunnerSpec.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ describe("$$AnimateRunner", function() {
206206
var animationComplete = false;
207207
runner.finally(function() {
208208
animationComplete = true;
209-
}).then(noop, noop);
209+
}).catch(noop);
210210
runner[method]();
211211
$rootScope.$digest();
212212
expect(animationComplete).toBe(true);

test/ngResource/resourceSpec.js

+2-4
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();
@@ -1063,8 +1062,7 @@ describe("basic usage", function() {
10631062
it('should call the error callback if provided on non 2xx response (without data)', function() {
10641063
$httpBackend.expect('GET', '/CreditCard').respond(ERROR_CODE, ERROR_RESPONSE);
10651064

1066-
var ccs = CreditCard.get(callback, errorCB);
1067-
ccs.$promise.then(noop, noop);
1065+
CreditCard.get(callback, errorCB);
10681066
$httpBackend.flush();
10691067
expect(errorCB).toHaveBeenCalledOnce();
10701068
expect(callback).not.toHaveBeenCalled();

0 commit comments

Comments
 (0)