91
91
* This method *returns a new promise* which is resolved or rejected via the return value of the
92
92
* `successCallback` or `errorCallback`.
93
93
*
94
+ * - `catch(errorCallback)` – it is shorthand for `promise.then(null, errorCallback)`
95
+ *
94
96
* - `always(callback)` – allows you to observe either the fulfillment or rejection of a promise,
95
97
* but to do so without modifying the final value. This is useful to release resources or do some
96
98
* clean-up that needs to be done whether the promise was rejected or resolved. See the [full
@@ -230,6 +232,9 @@ function qFactory(nextTick, exceptionHandler) {
230
232
231
233
232
234
promise : {
235
+ "catch" : function ( callback ) {
236
+ return this . then ( null , callback ) ;
237
+ } ,
233
238
then : function ( callback , errback , progressback ) {
234
239
var result = defer ( ) ;
235
240
@@ -268,7 +273,6 @@ function qFactory(nextTick, exceptionHandler) {
268
273
return result . promise ;
269
274
} ,
270
275
always : function ( callback ) {
271
-
272
276
function makePromise ( value , resolved ) {
273
277
var result = defer ( ) ;
274
278
if ( resolved ) {
@@ -278,14 +282,14 @@ function qFactory(nextTick, exceptionHandler) {
278
282
}
279
283
return result . promise ;
280
284
}
281
-
285
+
282
286
function handleCallback ( value , isResolved ) {
283
- var callbackOutput = null ;
287
+ var callbackOutput = null ;
284
288
try {
285
289
callbackOutput = ( callback || defaultCallback ) ( ) ;
286
290
} catch ( e ) {
287
291
return makePromise ( e , false ) ;
288
- }
292
+ }
289
293
if ( callbackOutput && callbackOutput . then ) {
290
294
return callbackOutput . then ( function ( ) {
291
295
return makePromise ( value , isResolved ) ;
@@ -296,7 +300,7 @@ function qFactory(nextTick, exceptionHandler) {
296
300
return makePromise ( value , isResolved ) ;
297
301
}
298
302
}
299
-
303
+
300
304
return this . then ( function ( value ) {
301
305
return handleCallback ( value , true ) ;
302
306
} , function ( error ) {
0 commit comments