1 | /** @license MIT License (c) copyright B Cavalier & J Hann */
|
2 |
|
3 | /**
|
4 | * cancelable.js
|
5 | * @deprecated
|
6 | *
|
7 | * Decorator that makes a deferred "cancelable". It adds a cancel() method that
|
8 | * will call a special cancel handler function and then reject the deferred. The
|
9 | * cancel handler can be used to do resource cleanup, or anything else that should
|
10 | * be done before any other rejection handlers are executed.
|
11 | *
|
12 | * Usage:
|
13 | *
|
14 | * var cancelableDeferred = cancelable(when.defer(), myCancelHandler);
|
15 | *
|
16 | * @author brian@hovercraftstudios.com
|
17 | */
|
18 |
|
19 | (function(define) {
|
20 | define(function() {
|
21 |
|
22 | /**
|
23 | * Makes deferred cancelable, adding a cancel() method.
|
24 | * @deprecated
|
25 | *
|
26 | * @param deferred {Deferred} the {@link Deferred} to make cancelable
|
27 | * @param canceler {Function} cancel handler function to execute when this deferred
|
28 | * is canceled. This is guaranteed to run before all other rejection handlers.
|
29 | * The canceler will NOT be executed if the deferred is rejected in the standard
|
30 | * way, i.e. deferred.reject(). It ONLY executes if the deferred is canceled,
|
31 | * i.e. deferred.cancel()
|
32 | *
|
33 | * @returns deferred, with an added cancel() method.
|
34 | */
|
35 | return function(deferred, canceler) {
|
36 | // Add a cancel method to the deferred to reject the delegate
|
37 | // with the special canceled indicator.
|
38 | deferred.cancel = function() {
|
39 | try {
|
40 | deferred.reject(canceler(deferred));
|
41 | } catch(e) {
|
42 | deferred.reject(e);
|
43 | }
|
44 |
|
45 | return deferred.promise;
|
46 | };
|
47 |
|
48 | return deferred;
|
49 | };
|
50 |
|
51 | });
|
52 | })(typeof define === 'function' && define.amd ? define : function (factory) { module.exports = factory(); });
|
53 |
|
54 |
|