diff options
| author | Lucas Galfasó | 2014-01-31 15:22:36 -0300 |
|---|---|---|
| committer | Caitlin Potter | 2014-01-31 14:38:06 -0500 |
| commit | 074b0675a1f97dce07f520f1ae6198ed3c604000 (patch) | |
| tree | 04cf1ededc29a9de7eb37bbc6f8f306237b537ac | |
| parent | 5ed721b9b5e95ae08450e1ae9d5202e7f3f79295 (diff) | |
| download | angular.js-074b0675a1f97dce07f520f1ae6198ed3c604000.tar.bz2 | |
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
| -rw-r--r-- | src/ng/q.js | 8 | ||||
| -rw-r--r-- | test/ng/qSpec.js | 7 |
2 files changed, 14 insertions, 1 deletions
diff --git a/src/ng/q.js b/src/ng/q.js index 5c36dc07..0a98c335 100644 --- a/src/ng/q.js +++ b/src/ng/q.js @@ -223,7 +223,7 @@ function qFactory(nextTick, exceptionHandler) { reject: function(reason) { - deferred.resolve(reject(reason)); + deferred.resolve(createInternalRejectedPromise(reason)); }, @@ -380,6 +380,12 @@ function qFactory(nextTick, exceptionHandler) { * @returns {Promise} Returns a promise that was already resolved as rejected with the `reason`. */ var reject = function(reason) { + var result = defer(); + result.reject(reason); + return result.promise; + }; + + var createInternalRejectedPromise = function(reason) { return { then: function(callback, errback) { var result = defer(); diff --git a/test/ng/qSpec.js b/test/ng/qSpec.js index 73579137..b12a4a8f 100644 --- a/test/ng/qSpec.js +++ b/test/ng/qSpec.js @@ -959,6 +959,13 @@ describe('q', function() { mockNextTick.flush(); expect(log).toEqual(['errorBroken(rejected)->throw(catch me!)', 'errorAffected(catch me!)->reject(catch me!)']); }); + + + it('should have functions `finally` and `catch`', function() { + var rejectedPromise = q.reject('rejected'); + expect(rejectedPromise['finally']).not.toBeUndefined(); + expect(rejectedPromise['catch']).not.toBeUndefined(); + }); }); |
