Blame view

node_modules/when/lib/decorators/with.js 1.31 KB
ce4c83ff   wxy   初始提交
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
  /** @license MIT License (c) copyright 2010-2014 original author or authors */
  /** @author Brian Cavalier */
  /** @author John Hann */
  
  (function(define) { 'use strict';
  define(function() {
  
  	return function addWith(Promise) {
  		/**
  		 * Returns a promise whose handlers will be called with `this` set to
  		 * the supplied receiver.  Subsequent promises derived from the
  		 * returned promise will also have their handlers called with receiver
  		 * as `this`. Calling `with` with undefined or no arguments will return
  		 * a promise whose handlers will again be called in the usual Promises/A+
  		 * way (no `this`) thus safely undoing any previous `with` in the
  		 * promise chain.
  		 *
  		 * WARNING: Promises returned from `with`/`withThis` are NOT Promises/A+
  		 * compliant, specifically violating 2.2.5 (http://promisesaplus.com/#point-41)
  		 *
  		 * @param {object} receiver `this` value for all handlers attached to
  		 *  the returned promise.
  		 * @returns {Promise}
  		 */
  		Promise.prototype['with'] = Promise.prototype.withThis = function(receiver) {
  			var p = this._beget();
  			var child = p._handler;
  			child.receiver = receiver;
  			this._handler.chain(child, receiver);
  			return p;
  		};
  
  		return Promise;
  	};
  
  });
  }(typeof define === 'function' && define.amd ? define : function(factory) { module.exports = factory(); }));