UNPKG

1.66 kBJavaScriptView Raw
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) {
20define(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