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

Commit 074b067

Browse files
lgalfasocaitp
authored andcommitted
fix($q): make $q.reject support finally and catch
Add support for the functions `finally` and `catch` to the promise returned by `$q.reject` Closes #6048 Closes #6076
1 parent 5ed721b commit 074b067

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

src/ng/q.js

+7-1
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ function qFactory(nextTick, exceptionHandler) {
223223

224224

225225
reject: function(reason) {
226-
deferred.resolve(reject(reason));
226+
deferred.resolve(createInternalRejectedPromise(reason));
227227
},
228228

229229

@@ -380,6 +380,12 @@ function qFactory(nextTick, exceptionHandler) {
380380
* @returns {Promise} Returns a promise that was already resolved as rejected with the `reason`.
381381
*/
382382
var reject = function(reason) {
383+
var result = defer();
384+
result.reject(reason);
385+
return result.promise;
386+
};
387+
388+
var createInternalRejectedPromise = function(reason) {
383389
return {
384390
then: function(callback, errback) {
385391
var result = defer();

test/ng/qSpec.js

+7
Original file line numberDiff line numberDiff line change
@@ -959,6 +959,13 @@ describe('q', function() {
959959
mockNextTick.flush();
960960
expect(log).toEqual(['errorBroken(rejected)->throw(catch me!)', 'errorAffected(catch me!)->reject(catch me!)']);
961961
});
962+
963+
964+
it('should have functions `finally` and `catch`', function() {
965+
var rejectedPromise = q.reject('rejected');
966+
expect(rejectedPromise['finally']).not.toBeUndefined();
967+
expect(rejectedPromise['catch']).not.toBeUndefined();
968+
});
962969
});
963970

964971

0 commit comments

Comments
 (0)