SOURCE

!
function(e) {
	function n() {}

	function t(e, n) {
		return function() {
			e.apply(n, arguments)
		}
	}

	function o(e) {
		if ("object" != typeof this) throw new TypeError("Promises must be constructed via new");
		if ("function" != typeof e) throw new TypeError("not a function");
		this._state = 0,
		this._handled = !1,
		this._value = void 0,
		this._deferreds = [],
		s(e, this)
	}

	function i(e, n) {
		for (; 3 === e._state;) e = e._value;
		return 0 === e._state ? void e._deferreds.push(n) : (e._handled = !0, void o._immediateFn(function() {
			var t = 1 === e._state ? n.onFulfilled: n.onRejected;
			if (null === t) return void(1 === e._state ? r: u)(n.promise, e._value);
			var o;
			try {
				o = t(e._value)
			} catch(i) {
				return void u(n.promise, i)
			}
			r(n.promise, o)
		}))
	}

	function r(e, n) {
		try {
			if (n === e) throw new TypeError("A promise cannot be resolved with itself.");
			if (n && ("object" == typeof n || "function" == typeof n)) {
				var i = n.then;
				if (n instanceof o) return e._state = 3,
				e._value = n,
				void f(e);
				if ("function" == typeof i) return void s(t(i, n), e)
			}
			e._state = 1,
			e._value = n,
			f(e)
		} catch(r) {
			u(e, r)
		}
	}

	function u(e, n) {
		e._state = 2,
		e._value = n,
		f(e)
	}

	function f(e) {
		2 === e._state && 0 === e._deferreds.length && o._immediateFn(function() {
			e._handled || o._unhandledRejectionFn(e._value)
		});
		for (var n = 0,
		t = e._deferreds.length; n < t; n++) i(e, e._deferreds[n]);
		e._deferreds = null
	}

	function c(e, n, t) {
		this.onFulfilled = "function" == typeof e ? e: null,
		this.onRejected = "function" == typeof n ? n: null,
		this.promise = t
	}

	function s(e, n) {
		var t = !1;
		try {
			e(function(e) {
				t || (t = !0, r(n, e))
			},
			function(e) {
				t || (t = !0, u(n, e))
			})
		} catch(o) {
			if (t) return;
			t = !0,
			u(n, o)
		}
	}
	var a = setTimeout;
	o.prototype["catch"] = function(e) {
		return this.then(null, e)
	},
	o.prototype.then = function(e, t) {
		var o = new this.constructor(n);
		return i(this, new c(e, t, o)),
		o
	},
	o.all = function(e) {
		var n = Array.prototype.slice.call(e);
		return new o(function(e, t) {
			function o(r, u) {
				try {
					if (u && ("object" == typeof u || "function" == typeof u)) {
						var f = u.then;
						if ("function" == typeof f) return void f.call(u,
						function(e) {
							o(r, e)
						},
						t)
					}
					n[r] = u,
					0 === --i && e(n)
				} catch(c) {
					t(c)
				}
			}
			if (0 === n.length) return e([]);
			for (var i = n.length,
			r = 0; r < n.length; r++) o(r, n[r])
		})
	},
	o.resolve = function(e) {
		return e && "object" == typeof e && e.constructor === o ? e: new o(function(n) {
			n(e)
		})
	},
	o.reject = function(e) {
		return new o(function(n, t) {
			t(e)
		})
	},
	o.race = function(e) {
		return new o(function(n, t) {
			for (var o = 0,
			i = e.length; o < i; o++) e[o].then(n, t)
		})
	},
	o._immediateFn = "function" == typeof setImmediate &&
	function(e) {
		setImmediate(e)
	} ||
	function(e) {
		a(e, 0)
	},
	o._unhandledRejectionFn = function(e) {
		"undefined" != typeof console && console && console.warn("Possible Unhandled Promise Rejection:", e)
	},
	o._setImmediateFn = function(e) {
		o._immediateFn = e
	},
	o._setUnhandledRejectionFn = function(e) {
		o._unhandledRejectionFn = e
	},
	"undefined" != typeof module && module.exports ? module.exports = o: e.Promise || (e.Promise = o)
} (this);
console 命令行工具 X clear

                    
>
console