promise.min.js 3.3 KB

1
  1. !function (e, n) { "object" == typeof exports && "undefined" != typeof module ? module.exports = n() : "function" == typeof define && define.amd ? define(n) : e.Promise = n() }(this, function () { "use strict"; function e() { } function n(e) { if (!(this instanceof n)) 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 = undefined, this._deferreds = [], f(e, this) } function t(e, t) { for (; 3 === e._state;) e = e._value; 0 !== e._state ? (e._handled = !0, n._immediateFn(function () { var n = 1 === e._state ? t.onFulfilled : t.onRejected; if (null !== n) { var i; try { i = n(e._value) } catch (f) { return void r(t.promise, f) } o(t.promise, i) } else (1 === e._state ? o : r)(t.promise, e._value) })) : e._deferreds.push(t) } function o(e, t) { try { if (t === e) throw new TypeError("A promise cannot be resolved with itself."); if (t && ("object" == typeof t || "function" == typeof t)) { var o = t.then; if (t instanceof n) return e._state = 3, e._value = t, void i(e); if ("function" == typeof o) return void f(function (e, n) { return function () { e.apply(n, arguments) } }(o, t), e) } e._state = 1, e._value = t, i(e) } catch (u) { r(e, u) } } function r(e, n) { e._state = 2, e._value = n, i(e) } function i(e) { 2 === e._state && 0 === e._deferreds.length && n._immediateFn(function () { e._handled || n._unhandledRejectionFn(e._value) }); for (var o = 0, r = e._deferreds.length; r > o; o++) t(e, e._deferreds[o]); e._deferreds = null } function f(e, n) { var t = !1; try { e(function (e) { t || (t = !0, o(n, e)) }, function (e) { t || (t = !0, r(n, e)) }) } catch (i) { if (t) return; t = !0, r(n, i) } } var u = setTimeout; return n.prototype["catch"] = function (e) { return this.then(null, e) }, n.prototype.then = function (n, o) { var r = new this.constructor(e); return t(this, new function (e, n, t) { this.onFulfilled = "function" == typeof e ? e : null, this.onRejected = "function" == typeof n ? n : null, this.promise = t }(n, o, r)), r }, n.prototype["finally"] = function (e) { var n = this.constructor; return this.then(function (t) { return n.resolve(e()).then(function () { return t }) }, function (t) { return n.resolve(e()).then(function () { return n.reject(t) }) }) }, n.all = function (e) { return new n(function (n, t) { function o(e, f) { try { if (f && ("object" == typeof f || "function" == typeof f)) { var u = f.then; if ("function" == typeof u) return void u.call(f, function (n) { o(e, n) }, t) } r[e] = f, 0 == --i && n(r) } catch (c) { t(c) } } if (!e || "undefined" == typeof e.length) throw new TypeError("Promise.all accepts an array"); var r = Array.prototype.slice.call(e); if (0 === r.length) return n([]); for (var i = r.length, f = 0; r.length > f; f++) o(f, r[f]) }) }, n.resolve = function (e) { return e && "object" == typeof e && e.constructor === n ? e : new n(function (n) { n(e) }) }, n.reject = function (e) { return new n(function (n, t) { t(e) }) }, n.race = function (e) { return new n(function (n, t) { for (var o = 0, r = e.length; r > o; o++) e[o].then(n, t) }) }, n._immediateFn = "function" == typeof setImmediate && function (e) { setImmediate(e) } || function (e) { u(e, 0) }, n._unhandledRejectionFn = function (e) { void 0 !== console && console && console.warn("Possible Unhandled Promise Rejection:", e) }, n });