extend-promise
Advanced tools
Comparing version 0.0.2 to 0.0.5
/*! | ||
* extend-promise v0.0.2 | ||
* extend-promise v0.0.3 | ||
* Homepage https://github.com/cnwhy/extend-promise#readme | ||
* License BSD | ||
* License BSD-2-Clause | ||
*/ | ||
@@ -33,14 +33,14 @@ (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ | ||
},{"./src/extendClass":3,"./src/extendPrototype":4}],3:[function(require,module,exports){ | ||
function isPlainObject(obj) { | ||
if (obj === null || typeof(obj) !== "object" || obj.nodeType || (obj === obj.window)) { | ||
return false; | ||
} | ||
if (obj.constructor && !Object.prototype.hasOwnProperty.call(obj.constructor.prototype, "isPrototypeOf")) { | ||
return false; | ||
} | ||
return true; | ||
} | ||
function extendClass(Promise,obj){ | ||
var QClass; | ||
'use strict'; | ||
var utils = require('./utils') | ||
var isArray = utils.isArray | ||
,isEmpty = utils.isEmpty | ||
,isFunction = utils.isFunction | ||
,isPlainObject = utils.isPlainObject | ||
,arg2arr = utils.arg2arr | ||
function extendClass(Promise,obj,funnames){ | ||
var QClass,source; | ||
if(obj){ | ||
source = true | ||
QClass = obj; | ||
@@ -51,8 +51,25 @@ }else{ | ||
function asbind(name){ | ||
if(isArray(funnames)){ | ||
var nomark = false; | ||
for(var i = 0; i<funnames.length; i++){ | ||
if(funnames[i] == name){ | ||
nomark = true; | ||
break; | ||
} | ||
} | ||
if(!nomark) return false; | ||
} | ||
if(source){ | ||
return !isFunction(QClass[name]); | ||
} | ||
return true; | ||
} | ||
if(!QClass.Promise && Promise != obj) QClass.Promise = Promise; | ||
//defer | ||
if(typeof Promise.defer == "function"){ | ||
if(isFunction(Promise.defer)){ | ||
QClass.defer = Promise.defer | ||
}else if(typeof Promise.deferred == "function"){ | ||
}else if(isFunction(Promise.deferred)){ | ||
QClass.defer = Promise.deferred | ||
@@ -75,5 +92,3 @@ }else{ | ||
//delay | ||
if(typeof Promise.delay == "function"){ | ||
QClass.delay = Promise.delay; | ||
}else{ | ||
if(asbind("delay")){ | ||
QClass.delay = function(ms,value){ | ||
@@ -87,5 +102,3 @@ var defer = QClass.defer(); | ||
//resolve | ||
if(typeof Promise.resolve == "function"){ | ||
QClass.resolve = Promise.resolve; | ||
}else{ | ||
if(asbind("resolve")){ | ||
QClass.resolve = function(obj){ | ||
@@ -99,5 +112,3 @@ var defer = QClass.defer(); | ||
//reject | ||
if(typeof Promise.reject == "function"){ | ||
QClass.reject = Promise.reject; | ||
}else{ | ||
if(asbind("reject")){ | ||
QClass.reject = function(obj){ | ||
@@ -111,3 +122,5 @@ var defer = QClass.defer(); | ||
function getall(map,count){ | ||
count = +count > 0 ? +count : 0; | ||
if(!isEmpty(count)){ | ||
count = +count > 0 ? +count : 0; | ||
} | ||
return function(promises) { | ||
@@ -119,3 +132,3 @@ var defer = QClass.defer(); | ||
QClass.resolve(_p).then(function(d) { | ||
if(map || !count (count && data.length<count)) data[i] = d; | ||
data[i] = d; | ||
if (--_tempI == 0 || (!map && count && data.length>=count)) { | ||
@@ -125,3 +138,3 @@ defer.resolve(data); | ||
}, function(err) { | ||
if (typeof count == "undefined") { | ||
if (isEmpty(count)) { | ||
defer.reject(err); | ||
@@ -134,3 +147,3 @@ }else if(--_tempI == 0){ | ||
} | ||
if(Object.prototype.toString.call(promises) === '[object Array]'){ | ||
if(isArray(promises)){ | ||
data = []; | ||
@@ -153,22 +166,18 @@ for(var i = 0; i<promises.length; i++){ | ||
//all | ||
if(typeof Promise.all == "function"){ | ||
QClass.all = Promise.all; | ||
}else{ | ||
if(asbind("all")){ | ||
QClass.all = getall() | ||
} | ||
if (typeof Promise.allMap == "function") { | ||
QClass.allMap = Promise.allMap; | ||
} else { | ||
if(asbind("allMap")){ | ||
QClass.allMap = getall(true); | ||
} | ||
QClass.some = function(proArr,count){ | ||
return getall(false,count||0)(proArr) | ||
if(asbind("some")){ | ||
QClass.some = function(proArr,count){ | ||
return getall(false,count||0)(proArr) | ||
} | ||
} | ||
//map | ||
if(typeof Promise.map == "function"){ | ||
QClass.map = Promise.map; | ||
}else{ | ||
if(asbind("map")){ | ||
QClass.map = function(data,mapfun,options){ | ||
@@ -216,27 +225,28 @@ var defer = QClass.defer(); | ||
//any | race | ||
if(typeof Promise.race == "function"){ | ||
QClass.race = QClass.any = Promise.race; | ||
}else if(typeof Promise.any == "function"){ | ||
QClass.race = QClass.any = Promise.any | ||
}else{ | ||
QClass.race = QClass.any = function(proArr) { | ||
var defer = QClass.defer(); | ||
for (var i = 0; i < proArr.length; i++) { | ||
+ function() { | ||
var _i = i; | ||
//nextTick(function() { | ||
var _p = proArr[_i]; | ||
QClass.resolve(_p).then(function(data) { | ||
defer.resolve(data); | ||
}, function(err) { | ||
defer.reject(err); | ||
}) | ||
//}, 0) | ||
}() | ||
} | ||
return defer.promise; | ||
function race(proArr) { | ||
var defer = QClass.defer(); | ||
for (var i = 0; i < proArr.length; i++) { | ||
+ function() { | ||
var _i = i; | ||
//nextTick(function() { | ||
var _p = proArr[_i]; | ||
QClass.resolve(_p).then(function(data) { | ||
defer.resolve(data); | ||
}, function(err) { | ||
defer.reject(err); | ||
}) | ||
//}, 0) | ||
}() | ||
} | ||
return defer.promise; | ||
} | ||
//any | race | ||
if(asbind("race")){ | ||
QClass.race = race; | ||
} | ||
if(asbind("any")){ | ||
QClass.any = race; | ||
} | ||
/*封装CPS*/ | ||
@@ -250,21 +260,27 @@ //callback Adapter | ||
} | ||
QClass.nfcall = function(f){ | ||
function nfcall(f){ | ||
var _this = this === QClass ? null : this; | ||
var defer = QClass.defer(); | ||
var argsArray = Array.prototype.slice.call(arguments,1) | ||
var argsArray = arg2arr(arguments,1) | ||
argsArray.push(cbAdapter(defer)) | ||
f.apply(_this,argsArray) | ||
return defer.promise; | ||
} | ||
QClass.nfapply = function(f,args){ | ||
var _this = this === QClass ? null : this; | ||
var defer = QClass.defer(); | ||
if(Object.prototype.toString.call(args) === '[object Array]'){ | ||
args.push(cbAdapter(defer)); | ||
f.apply(_this,args) | ||
}else{ | ||
throw "args TypeError" | ||
if(asbind("nfcall")){ | ||
QClass.nfcall = nfcall; | ||
} | ||
if(asbind("nfapply")){ | ||
QClass.nfapply = function(f,args){ | ||
var _this = this === QClass ? null : this; | ||
var defer = QClass.defer(); | ||
if(isArray(args)){ | ||
args.push(cbAdapter(defer)); | ||
f.apply(_this,args) | ||
}else{ | ||
throw "args TypeError" | ||
} | ||
return defer.promise; | ||
} | ||
return defer.promise; | ||
} | ||
@@ -275,3 +291,3 @@ | ||
return function(){ | ||
return QClass.nfapply.call(_this,f,Array.prototype.slice.call(arguments)) | ||
return nfcall.call(_this,f,arg2arr(arguments)) | ||
} | ||
@@ -282,3 +298,3 @@ } | ||
module.exports = extendClass; | ||
},{}],4:[function(require,module,exports){ | ||
},{"./utils":5}],4:[function(require,module,exports){ | ||
function extendPrototype(Promise){ | ||
@@ -309,3 +325,3 @@ var prototype = Promise.prototype; | ||
*/ | ||
Prototype.catchOf = function(errType,fn){ | ||
prototype.catchOf = function(errType,fn){ | ||
fn = fn || errType; | ||
@@ -347,2 +363,29 @@ return this.then(null,function(err){ | ||
module.exports = extendPrototype; | ||
},{}],5:[function(require,module,exports){ | ||
'use strict'; | ||
exports.isPlainObject = function(obj) { | ||
if (obj === null || typeof(obj) !== "object" || obj.nodeType || (obj === obj.window)) { | ||
return false; | ||
} | ||
if (obj.constructor && !Object.prototype.hasOwnProperty.call(obj.constructor.prototype, "isPrototypeOf")) { | ||
return false; | ||
} | ||
return true; | ||
} | ||
exports.isArray = function(obj){ | ||
return Object.prototype.toString.call(obj) == "[objece Array]" | ||
} | ||
exports.isFunction = function(obj){ | ||
return typeof obj == "function" | ||
} | ||
exports.isEmpty = function(obj){ | ||
return typeof obj == 'undefined' || obj === null; | ||
} | ||
exports.arg2arr = function(arg,b,s){ | ||
return Array.prototype.slice.call(arg,b,s); | ||
} | ||
},{}]},{},[1]) |
/*! | ||
* extend-promise v0.0.2 | ||
* extend-promise v0.0.3 | ||
* Homepage https://github.com/cnwhy/extend-promise#readme | ||
* License BSD | ||
* License BSD-2-Clause | ||
*/ | ||
!function e(n,r,t){function o(i,u){if(!r[i]){if(!n[i]){var c="function"==typeof require&&require;if(!u&&c)return c(i,!0);if(f)return f(i,!0);throw new Error("Cannot find module '"+i+"'")}var l=r[i]={exports:{}};n[i][0].call(l.exports,function(e){var r=n[i][1][e];return o(r?r:e)},l,l.exports,e,n,r,t)}return r[i].exports}for(var f="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}({1:[function(e,n,r){!function(e,n){if("function"==typeof define&&(define.amd||define.cmd))define([],n);else{if("undefined"==typeof window&&"undefined"==typeof self)throw new Error("加载 "+e+" 模块失败!,请检查您的环境!");var r="undefined"!=typeof window?window:self;r[e]=n(),"function"==typeof r.Promise&&r[e].auto(r.Promise)}}("extendPromise",function(){var n=e("../index");return n.auto=function(e){n.extendClass(e),n.extendPrototype(e)},n})},{"../index":2}],2:[function(e,n,r){n.exports={extendClass:e("./src/extendClass"),extendPrototype:e("./src/extendPrototype")}},{"./src/extendClass":3,"./src/extendPrototype":4}],3:[function(e,n,r){function t(e){return null!==e&&"object"==typeof e&&!e.nodeType&&e!==e.window&&!(e.constructor&&!Object.prototype.hasOwnProperty.call(e.constructor.prototype,"isPrototypeOf"))}function o(e,n){function r(e,n){return n=+n>0?+n:0,function(r){var o,i=f.defer(),u=0,c=function(t){var c=r[t];f.resolve(c).then(function(r){!e&&n(n&&o.length<n)||(o[t]=r),(0==--u||!e&&n&&o.length>=n)&&i.resolve(o)},function(e){"undefined"==typeof n?i.reject(e):0==--u&&i.resolve(o)}),u++};if("[object Array]"===Object.prototype.toString.call(r)){o=[];for(var l=0;l<r.length;l++)c(l)}else if(e&&t(r)){o={};for(var l in r)c(l)}else i.reject(new TypeError);return i.promise}}function o(e){return function(n,r){return n?e.reject(n):void e.resolve(r)}}var f;return f=n?n:e,f.Promise||e==n||(f.Promise=e),"function"==typeof e.defer?f.defer=e.defer:"function"==typeof e.deferred?f.defer=e.deferred:f.defer=function(){var n,r,t=new e(function(e,t){n=e,r=t});return{promise:t,resolve:n,reject:r}},"function"==typeof e.delay?f.delay=e.delay:f.delay=function(e,n){var r=f.defer();return setTimeout(r.resolve,e,n),r.promise},"function"==typeof e.resolve?f.resolve=e.resolve:f.resolve=function(e){var n=f.defer();return n.resolve(e),n.promise},"function"==typeof e.reject?f.reject=e.reject:f.reject=function(e){var n=f.defer();return n.reject(e),n.promise},"function"==typeof e.all?f.all=e.all:f.all=r(),"function"==typeof e.allMap?f.allMap=e.allMap:f.allMap=r(!0),f.some=function(e,n){return r(!1,n||0)(e)},"function"==typeof e.map?f.map=e.map:f.map=function(e,n,r){function t(){if(l<a.length){var r=a[l],c=f.resolve(n(e[r],r,e)).then(function(e){return t(),e},o.reject);i.push(c),u--,l++}else f.all(i).then(o.resolve,o.reject)}var o=f.defer(),i=[],u=r?+r.concurrency:0;if(0==u||u!=u){for(var c in e)i.push(n(e[c],c,e));return f.all(i).then(o.resolve,o.reject),o.promise}var l=0,a=function(){var n=[];for(var r in e)n.push(r);return n}();do t();while(u>0&&l<a.length);return o.promise},"function"==typeof e.race?f.race=f.any=e.race:"function"==typeof e.any?f.race=f.any=e.any:f.race=f.any=function(e){for(var n=f.defer(),r=0;r<e.length;r++)+function(){var t=r,o=e[t];f.resolve(o).then(function(e){n.resolve(e)},function(e){n.reject(e)})}();return n.promise},f.nfcall=function(e){var n=this===f?null:this,r=f.defer(),t=Array.prototype.slice.call(arguments,1);return t.push(o(r)),e.apply(n,t),r.promise},f.nfapply=function(e,n){var r=this===f?null:this,t=f.defer();if("[object Array]"!==Object.prototype.toString.call(n))throw"args TypeError";return n.push(o(t)),e.apply(r,n),t.promise},f.denodeify=function(e){var n=this===f?null:this;return function(){return f.nfapply.call(n,e,Array.prototype.slice.call(arguments))}},f}n.exports=o},{}],4:[function(e,n,r){function t(e){var n=e.prototype;return n.done=function(e,n){this.then(function(n){"function"==typeof e&&setTimeout(function(){e(n)},0)},function(e){if("function"!=typeof n)throw e;setTimeout(function(){n(e)},0)})},n.spread=function(e,n){return this.then(function(n){return e.apply(null,n)},n)},n.fail=n.catch=function(e){return this.then(null,e)},Prototype.catchOf=function(e,n){return n=n||e,this.then(null,function(r){var t=typeof n;if("function"!=t)throw r;if(e===n)return n(r);if(e===r||"function"==typeof e&&r instanceof e)return n(r);throw r})},n.error=function(e){return this.catchOf(Error,e)},n.fin=n.finally=function(e){var n=function(n,r){try{e(n,r)}catch(e){}};return this.then(function(e){return n(e),e},function(e){throw n(null,e),e})},e}n.exports=t},{}]},{},[1]); | ||
!function e(n,r,t){function o(u,f){if(!r[u]){if(!n[u]){var c="function"==typeof require&&require;if(!f&&c)return c(u,!0);if(i)return i(u,!0);throw new Error("Cannot find module '"+u+"'")}var s=r[u]={exports:{}};n[u][0].call(s.exports,function(e){var r=n[u][1][e];return o(r?r:e)},s,s.exports,e,n,r,t)}return r[u].exports}for(var i="function"==typeof require&&require,u=0;u<t.length;u++)o(t[u]);return o}({1:[function(e,n,r){!function(e,n){if("function"==typeof define&&(define.amd||define.cmd))define([],n);else{if("undefined"==typeof window&&"undefined"==typeof self)throw new Error("加载 "+e+" 模块失败!,请检查您的环境!");var r="undefined"!=typeof window?window:self;r[e]=n(),"function"==typeof r.Promise&&r[e].auto(r.Promise)}}("extendPromise",function(){var n=e("../index");return n.auto=function(e){n.extendClass(e),n.extendPrototype(e)},n})},{"../index":2}],2:[function(e,n,r){n.exports={extendClass:e("./src/extendClass"),extendPrototype:e("./src/extendPrototype")}},{"./src/extendClass":3,"./src/extendPrototype":4}],3:[function(e,n,r){"use strict";function t(e,n,r){function t(e){if(i(r)){for(var n=!1,t=0;t<r.length;t++)if(r[t]==e){n=!0;break}if(!n)return!1}return!h||!f(d[e])}function o(e,n){return u(n)||(n=+n>0?+n:0),function(r){var t,o=d.defer(),f=0,s=function(i){var c=r[i];d.resolve(c).then(function(r){t[i]=r,(0==--f||!e&&n&&t.length>=n)&&o.resolve(t)},function(e){u(n)?o.reject(e):0==--f&&o.resolve(t)}),f++};if(i(r)){t=[];for(var l=0;l<r.length;l++)s(l)}else if(e&&c(r)){t={};for(var l in r)s(l)}else o.reject(new TypeError);return o.promise}}function l(e){for(var n=d.defer(),r=0;r<e.length;r++)+function(){var t=r,o=e[t];d.resolve(o).then(function(e){n.resolve(e)},function(e){n.reject(e)})}();return n.promise}function a(e){return function(n,r){return n?e.reject(n):void e.resolve(r)}}function p(e){var n=this===d?null:this,r=d.defer(),t=s(arguments,1);t.push(a(r)),e.apply(n,t)}var d,h;return n?(h=!0,d=n):d=e,d.Promise||e==n||(d.Promise=e),f(e.defer)?d.defer=e.defer:f(e.deferred)?d.defer=e.deferred:d.defer=function(){var n,r,t=new e(function(e,t){n=e,r=t});return{promise:t,resolve:n,reject:r}},t("delay")&&(d.delay=function(e,n){var r=d.defer();return setTimeout(r.resolve,e,n),r.promise}),t("resolve")&&(d.resolve=function(e){var n=d.defer();return n.resolve(e),n.promise}),t("reject")&&(d.reject=function(e){var n=d.defer();return n.reject(e),n.promise}),t("all")&&(d.all=o()),t("allMap")&&(d.allMap=o(!0)),t("some")&&(d.some=function(e,n){return o(!1,n||0)(e)}),t("map")&&(d.map=function(e,n,r){function t(){if(c<s.length){var r=s[c],f=d.resolve(n(e[r],r,e)).then(function(e){return t(),e},o.reject);i.push(f),u--,c++}else d.all(i).then(o.resolve,o.reject)}var o=d.defer(),i=[],u=r?+r.concurrency:0;if(0==u||u!=u){for(var f in e)i.push(n(e[f],f,e));return d.all(i).then(o.resolve,o.reject),o.promise}var c=0,s=function(){var n=[];for(var r in e)n.push(r);return n}();do t();while(u>0&&c<s.length);return o.promise}),t("race")&&(d.race=l),t("any")&&(d.any=l),t("nfcall")&&(d.nfcall=p),t("nfapply")&&(d.nfapply=function(e,n){var r=this===d?null:this,t=d.defer();if(!i(n))throw"args TypeError";return n.push(a(t)),e.apply(r,n),t.promise}),d.denodeify=function(e){var n=this===d?null:this;return function(){return p.call(n,e,s(arguments))}},d}var o=e("./utils"),i=o.isArray,u=o.isEmpty,f=o.isFunction,c=o.isPlainObject,s=o.arg2arr;n.exports=t},{"./utils":5}],4:[function(e,n,r){function t(e){var n=e.prototype;return n.done=function(e,n){this.then(function(n){"function"==typeof e&&setTimeout(function(){e(n)},0)},function(e){if("function"!=typeof n)throw e;setTimeout(function(){n(e)},0)})},n.spread=function(e,n){return this.then(function(n){return e.apply(null,n)},n)},n.fail=n.catch=function(e){return this.then(null,e)},n.catchOf=function(e,n){return n=n||e,this.then(null,function(r){var t=typeof n;if("function"!=t)throw r;if(e===n)return n(r);if(e===r||"function"==typeof e&&r instanceof e)return n(r);throw r})},n.error=function(e){return this.catchOf(Error,e)},n.fin=n.finally=function(e){var n=function(n,r){try{e(n,r)}catch(e){}};return this.then(function(e){return n(e),e},function(e){throw n(null,e),e})},e}n.exports=t},{}],5:[function(e,n,r){"use strict";r.isPlainObject=function(e){return null!==e&&"object"==typeof e&&!e.nodeType&&e!==e.window&&!(e.constructor&&!Object.prototype.hasOwnProperty.call(e.constructor.prototype,"isPrototypeOf"))},r.isArray=function(e){return"[objece Array]"==Object.prototype.toString.call(e)},r.isFunction=function(e){return"function"==typeof e},r.isEmpty=function(e){return"undefined"==typeof e||null===e},r.arg2arr=function(e,n,r){return Array.prototype.slice.call(e,n,r)}},{}]},{},[1]); |
/*! | ||
* extend-promise v0.0.2 | ||
* extend-promise v0.0.3 | ||
* Homepage https://github.com/cnwhy/extend-promise#readme | ||
* License BSD | ||
* License BSD-2-Clause | ||
*/ | ||
@@ -26,14 +26,14 @@ (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ | ||
},{"../src/polyfills":4}],2:[function(require,module,exports){ | ||
function isPlainObject(obj) { | ||
if (obj === null || typeof(obj) !== "object" || obj.nodeType || (obj === obj.window)) { | ||
return false; | ||
} | ||
if (obj.constructor && !Object.prototype.hasOwnProperty.call(obj.constructor.prototype, "isPrototypeOf")) { | ||
return false; | ||
} | ||
return true; | ||
} | ||
function extendClass(Promise,obj){ | ||
var QClass; | ||
'use strict'; | ||
var utils = require('./utils') | ||
var isArray = utils.isArray | ||
,isEmpty = utils.isEmpty | ||
,isFunction = utils.isFunction | ||
,isPlainObject = utils.isPlainObject | ||
,arg2arr = utils.arg2arr | ||
function extendClass(Promise,obj,funnames){ | ||
var QClass,source; | ||
if(obj){ | ||
source = true | ||
QClass = obj; | ||
@@ -44,8 +44,25 @@ }else{ | ||
function asbind(name){ | ||
if(isArray(funnames)){ | ||
var nomark = false; | ||
for(var i = 0; i<funnames.length; i++){ | ||
if(funnames[i] == name){ | ||
nomark = true; | ||
break; | ||
} | ||
} | ||
if(!nomark) return false; | ||
} | ||
if(source){ | ||
return !isFunction(QClass[name]); | ||
} | ||
return true; | ||
} | ||
if(!QClass.Promise && Promise != obj) QClass.Promise = Promise; | ||
//defer | ||
if(typeof Promise.defer == "function"){ | ||
if(isFunction(Promise.defer)){ | ||
QClass.defer = Promise.defer | ||
}else if(typeof Promise.deferred == "function"){ | ||
}else if(isFunction(Promise.deferred)){ | ||
QClass.defer = Promise.deferred | ||
@@ -68,5 +85,3 @@ }else{ | ||
//delay | ||
if(typeof Promise.delay == "function"){ | ||
QClass.delay = Promise.delay; | ||
}else{ | ||
if(asbind("delay")){ | ||
QClass.delay = function(ms,value){ | ||
@@ -80,5 +95,3 @@ var defer = QClass.defer(); | ||
//resolve | ||
if(typeof Promise.resolve == "function"){ | ||
QClass.resolve = Promise.resolve; | ||
}else{ | ||
if(asbind("resolve")){ | ||
QClass.resolve = function(obj){ | ||
@@ -92,5 +105,3 @@ var defer = QClass.defer(); | ||
//reject | ||
if(typeof Promise.reject == "function"){ | ||
QClass.reject = Promise.reject; | ||
}else{ | ||
if(asbind("reject")){ | ||
QClass.reject = function(obj){ | ||
@@ -104,3 +115,5 @@ var defer = QClass.defer(); | ||
function getall(map,count){ | ||
count = +count > 0 ? +count : 0; | ||
if(!isEmpty(count)){ | ||
count = +count > 0 ? +count : 0; | ||
} | ||
return function(promises) { | ||
@@ -112,3 +125,3 @@ var defer = QClass.defer(); | ||
QClass.resolve(_p).then(function(d) { | ||
if(map || !count (count && data.length<count)) data[i] = d; | ||
data[i] = d; | ||
if (--_tempI == 0 || (!map && count && data.length>=count)) { | ||
@@ -118,3 +131,3 @@ defer.resolve(data); | ||
}, function(err) { | ||
if (typeof count == "undefined") { | ||
if (isEmpty(count)) { | ||
defer.reject(err); | ||
@@ -127,3 +140,3 @@ }else if(--_tempI == 0){ | ||
} | ||
if(Object.prototype.toString.call(promises) === '[object Array]'){ | ||
if(isArray(promises)){ | ||
data = []; | ||
@@ -146,22 +159,18 @@ for(var i = 0; i<promises.length; i++){ | ||
//all | ||
if(typeof Promise.all == "function"){ | ||
QClass.all = Promise.all; | ||
}else{ | ||
if(asbind("all")){ | ||
QClass.all = getall() | ||
} | ||
if (typeof Promise.allMap == "function") { | ||
QClass.allMap = Promise.allMap; | ||
} else { | ||
if(asbind("allMap")){ | ||
QClass.allMap = getall(true); | ||
} | ||
QClass.some = function(proArr,count){ | ||
return getall(false,count||0)(proArr) | ||
if(asbind("some")){ | ||
QClass.some = function(proArr,count){ | ||
return getall(false,count||0)(proArr) | ||
} | ||
} | ||
//map | ||
if(typeof Promise.map == "function"){ | ||
QClass.map = Promise.map; | ||
}else{ | ||
if(asbind("map")){ | ||
QClass.map = function(data,mapfun,options){ | ||
@@ -209,27 +218,28 @@ var defer = QClass.defer(); | ||
//any | race | ||
if(typeof Promise.race == "function"){ | ||
QClass.race = QClass.any = Promise.race; | ||
}else if(typeof Promise.any == "function"){ | ||
QClass.race = QClass.any = Promise.any | ||
}else{ | ||
QClass.race = QClass.any = function(proArr) { | ||
var defer = QClass.defer(); | ||
for (var i = 0; i < proArr.length; i++) { | ||
+ function() { | ||
var _i = i; | ||
//nextTick(function() { | ||
var _p = proArr[_i]; | ||
QClass.resolve(_p).then(function(data) { | ||
defer.resolve(data); | ||
}, function(err) { | ||
defer.reject(err); | ||
}) | ||
//}, 0) | ||
}() | ||
} | ||
return defer.promise; | ||
function race(proArr) { | ||
var defer = QClass.defer(); | ||
for (var i = 0; i < proArr.length; i++) { | ||
+ function() { | ||
var _i = i; | ||
//nextTick(function() { | ||
var _p = proArr[_i]; | ||
QClass.resolve(_p).then(function(data) { | ||
defer.resolve(data); | ||
}, function(err) { | ||
defer.reject(err); | ||
}) | ||
//}, 0) | ||
}() | ||
} | ||
return defer.promise; | ||
} | ||
//any | race | ||
if(asbind("race")){ | ||
QClass.race = race; | ||
} | ||
if(asbind("any")){ | ||
QClass.any = race; | ||
} | ||
/*封装CPS*/ | ||
@@ -243,21 +253,27 @@ //callback Adapter | ||
} | ||
QClass.nfcall = function(f){ | ||
function nfcall(f){ | ||
var _this = this === QClass ? null : this; | ||
var defer = QClass.defer(); | ||
var argsArray = Array.prototype.slice.call(arguments,1) | ||
var argsArray = arg2arr(arguments,1) | ||
argsArray.push(cbAdapter(defer)) | ||
f.apply(_this,argsArray) | ||
return defer.promise; | ||
} | ||
QClass.nfapply = function(f,args){ | ||
var _this = this === QClass ? null : this; | ||
var defer = QClass.defer(); | ||
if(Object.prototype.toString.call(args) === '[object Array]'){ | ||
args.push(cbAdapter(defer)); | ||
f.apply(_this,args) | ||
}else{ | ||
throw "args TypeError" | ||
if(asbind("nfcall")){ | ||
QClass.nfcall = nfcall; | ||
} | ||
if(asbind("nfapply")){ | ||
QClass.nfapply = function(f,args){ | ||
var _this = this === QClass ? null : this; | ||
var defer = QClass.defer(); | ||
if(isArray(args)){ | ||
args.push(cbAdapter(defer)); | ||
f.apply(_this,args) | ||
}else{ | ||
throw "args TypeError" | ||
} | ||
return defer.promise; | ||
} | ||
return defer.promise; | ||
} | ||
@@ -268,3 +284,3 @@ | ||
return function(){ | ||
return QClass.nfapply.call(_this,f,Array.prototype.slice.call(arguments)) | ||
return nfcall.call(_this,f,arg2arr(arguments)) | ||
} | ||
@@ -275,3 +291,3 @@ } | ||
module.exports = extendClass; | ||
},{}],3:[function(require,module,exports){ | ||
},{"./utils":5}],3:[function(require,module,exports){ | ||
function extendPrototype(Promise){ | ||
@@ -302,3 +318,3 @@ var prototype = Promise.prototype; | ||
*/ | ||
Prototype.catchOf = function(errType,fn){ | ||
prototype.catchOf = function(errType,fn){ | ||
fn = fn || errType; | ||
@@ -346,2 +362,29 @@ return this.then(null,function(err){ | ||
} | ||
},{"../src/extendClass":2,"../src/extendPrototype":3}]},{},[1]) | ||
},{"../src/extendClass":2,"../src/extendPrototype":3}],5:[function(require,module,exports){ | ||
'use strict'; | ||
exports.isPlainObject = function(obj) { | ||
if (obj === null || typeof(obj) !== "object" || obj.nodeType || (obj === obj.window)) { | ||
return false; | ||
} | ||
if (obj.constructor && !Object.prototype.hasOwnProperty.call(obj.constructor.prototype, "isPrototypeOf")) { | ||
return false; | ||
} | ||
return true; | ||
} | ||
exports.isArray = function(obj){ | ||
return Object.prototype.toString.call(obj) == "[objece Array]" | ||
} | ||
exports.isFunction = function(obj){ | ||
return typeof obj == "function" | ||
} | ||
exports.isEmpty = function(obj){ | ||
return typeof obj == 'undefined' || obj === null; | ||
} | ||
exports.arg2arr = function(arg,b,s){ | ||
return Array.prototype.slice.call(arg,b,s); | ||
} | ||
},{}]},{},[1]) |
/*! | ||
* extend-promise v0.0.2 | ||
* extend-promise v0.0.3 | ||
* Homepage https://github.com/cnwhy/extend-promise#readme | ||
* License BSD | ||
* License BSD-2-Clause | ||
*/ | ||
!function e(r,n,t){function o(i,u){if(!n[i]){if(!r[i]){var c="function"==typeof require&&require;if(!u&&c)return c(i,!0);if(f)return f(i,!0);throw new Error("Cannot find module '"+i+"'")}var l=n[i]={exports:{}};r[i][0].call(l.exports,function(e){var n=r[i][1][e];return o(n?n:e)},l,l.exports,e,r,n,t)}return n[i].exports}for(var f="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}({1:[function(e,r,n){!function(e,r){if("function"==typeof define&&(define.amd||define.cmd))define([],r);else if("undefined"==typeof window&&"undefined"==typeof self)throw new Error("加载 "+e+" 模块失败!,请检查您的环境!")}("extendPromise",function(){var r="undefined"!=typeof window?window:self;if("function"!=typeof r.Promise)throw Error('需要Promise,但未找到,请尝试使用"promise-full.js"');var n=e("../src/polyfills")(r.Promise);return n})},{"../src/polyfills":4}],2:[function(e,r,n){function t(e){return null!==e&&"object"==typeof e&&!e.nodeType&&e!==e.window&&!(e.constructor&&!Object.prototype.hasOwnProperty.call(e.constructor.prototype,"isPrototypeOf"))}function o(e,r){function n(e,r){return r=+r>0?+r:0,function(n){var o,i=f.defer(),u=0,c=function(t){var c=n[t];f.resolve(c).then(function(n){!e&&r(r&&o.length<r)||(o[t]=n),(0==--u||!e&&r&&o.length>=r)&&i.resolve(o)},function(e){"undefined"==typeof r?i.reject(e):0==--u&&i.resolve(o)}),u++};if("[object Array]"===Object.prototype.toString.call(n)){o=[];for(var l=0;l<n.length;l++)c(l)}else if(e&&t(n)){o={};for(var l in n)c(l)}else i.reject(new TypeError);return i.promise}}function o(e){return function(r,n){return r?e.reject(r):void e.resolve(n)}}var f;return f=r?r:e,f.Promise||e==r||(f.Promise=e),"function"==typeof e.defer?f.defer=e.defer:"function"==typeof e.deferred?f.defer=e.deferred:f.defer=function(){var r,n,t=new e(function(e,t){r=e,n=t});return{promise:t,resolve:r,reject:n}},"function"==typeof e.delay?f.delay=e.delay:f.delay=function(e,r){var n=f.defer();return setTimeout(n.resolve,e,r),n.promise},"function"==typeof e.resolve?f.resolve=e.resolve:f.resolve=function(e){var r=f.defer();return r.resolve(e),r.promise},"function"==typeof e.reject?f.reject=e.reject:f.reject=function(e){var r=f.defer();return r.reject(e),r.promise},"function"==typeof e.all?f.all=e.all:f.all=n(),"function"==typeof e.allMap?f.allMap=e.allMap:f.allMap=n(!0),f.some=function(e,r){return n(!1,r||0)(e)},"function"==typeof e.map?f.map=e.map:f.map=function(e,r,n){function t(){if(l<a.length){var n=a[l],c=f.resolve(r(e[n],n,e)).then(function(e){return t(),e},o.reject);i.push(c),u--,l++}else f.all(i).then(o.resolve,o.reject)}var o=f.defer(),i=[],u=n?+n.concurrency:0;if(0==u||u!=u){for(var c in e)i.push(r(e[c],c,e));return f.all(i).then(o.resolve,o.reject),o.promise}var l=0,a=function(){var r=[];for(var n in e)r.push(n);return r}();do t();while(u>0&&l<a.length);return o.promise},"function"==typeof e.race?f.race=f.any=e.race:"function"==typeof e.any?f.race=f.any=e.any:f.race=f.any=function(e){for(var r=f.defer(),n=0;n<e.length;n++)+function(){var t=n,o=e[t];f.resolve(o).then(function(e){r.resolve(e)},function(e){r.reject(e)})}();return r.promise},f.nfcall=function(e){var r=this===f?null:this,n=f.defer(),t=Array.prototype.slice.call(arguments,1);return t.push(o(n)),e.apply(r,t),n.promise},f.nfapply=function(e,r){var n=this===f?null:this,t=f.defer();if("[object Array]"!==Object.prototype.toString.call(r))throw"args TypeError";return r.push(o(t)),e.apply(n,r),t.promise},f.denodeify=function(e){var r=this===f?null:this;return function(){return f.nfapply.call(r,e,Array.prototype.slice.call(arguments))}},f}r.exports=o},{}],3:[function(e,r,n){function t(e){var r=e.prototype;return r.done=function(e,r){this.then(function(r){"function"==typeof e&&setTimeout(function(){e(r)},0)},function(e){if("function"!=typeof r)throw e;setTimeout(function(){r(e)},0)})},r.spread=function(e,r){return this.then(function(r){return e.apply(null,r)},r)},r.fail=r.catch=function(e){return this.then(null,e)},Prototype.catchOf=function(e,r){return r=r||e,this.then(null,function(n){var t=typeof r;if("function"!=t)throw n;if(e===r)return r(n);if(e===n||"function"==typeof e&&n instanceof e)return r(n);throw n})},r.error=function(e){return this.catchOf(Error,e)},r.fin=r.finally=function(e){var r=function(r,n){try{e(r,n)}catch(e){}};return this.then(function(e){return r(e),e},function(e){throw r(null,e),e})},e}r.exports=t},{}],4:[function(e,r,n){r.exports=function(r){return e("../src/extendClass")(r),e("../src/extendPrototype")(r),r}},{"../src/extendClass":2,"../src/extendPrototype":3}]},{},[1]); | ||
!function e(r,n,t){function o(f,u){if(!n[f]){if(!r[f]){var c="function"==typeof require&&require;if(!u&&c)return c(f,!0);if(i)return i(f,!0);throw new Error("Cannot find module '"+f+"'")}var s=n[f]={exports:{}};r[f][0].call(s.exports,function(e){var n=r[f][1][e];return o(n?n:e)},s,s.exports,e,r,n,t)}return n[f].exports}for(var i="function"==typeof require&&require,f=0;f<t.length;f++)o(t[f]);return o}({1:[function(e,r,n){!function(e,r){if("function"==typeof define&&(define.amd||define.cmd))define([],r);else if("undefined"==typeof window&&"undefined"==typeof self)throw new Error("加载 "+e+" 模块失败!,请检查您的环境!")}("extendPromise",function(){var r="undefined"!=typeof window?window:self;if("function"!=typeof r.Promise)throw Error('需要Promise,但未找到,请尝试使用"promise-full.js"');var n=e("../src/polyfills")(r.Promise);return n})},{"../src/polyfills":4}],2:[function(e,r,n){"use strict";function t(e,r,n){function t(e){if(i(n)){for(var r=!1,t=0;t<n.length;t++)if(n[t]==e){r=!0;break}if(!r)return!1}return!h||!u(d[e])}function o(e,r){return f(r)||(r=+r>0?+r:0),function(n){var t,o=d.defer(),u=0,s=function(i){var c=n[i];d.resolve(c).then(function(n){t[i]=n,(0==--u||!e&&r&&t.length>=r)&&o.resolve(t)},function(e){f(r)?o.reject(e):0==--u&&o.resolve(t)}),u++};if(i(n)){t=[];for(var l=0;l<n.length;l++)s(l)}else if(e&&c(n)){t={};for(var l in n)s(l)}else o.reject(new TypeError);return o.promise}}function l(e){for(var r=d.defer(),n=0;n<e.length;n++)+function(){var t=n,o=e[t];d.resolve(o).then(function(e){r.resolve(e)},function(e){r.reject(e)})}();return r.promise}function a(e){return function(r,n){return r?e.reject(r):void e.resolve(n)}}function p(e){var r=this===d?null:this,n=d.defer(),t=s(arguments,1);t.push(a(n)),e.apply(r,t)}var d,h;return r?(h=!0,d=r):d=e,d.Promise||e==r||(d.Promise=e),u(e.defer)?d.defer=e.defer:u(e.deferred)?d.defer=e.deferred:d.defer=function(){var r,n,t=new e(function(e,t){r=e,n=t});return{promise:t,resolve:r,reject:n}},t("delay")&&(d.delay=function(e,r){var n=d.defer();return setTimeout(n.resolve,e,r),n.promise}),t("resolve")&&(d.resolve=function(e){var r=d.defer();return r.resolve(e),r.promise}),t("reject")&&(d.reject=function(e){var r=d.defer();return r.reject(e),r.promise}),t("all")&&(d.all=o()),t("allMap")&&(d.allMap=o(!0)),t("some")&&(d.some=function(e,r){return o(!1,r||0)(e)}),t("map")&&(d.map=function(e,r,n){function t(){if(c<s.length){var n=s[c],u=d.resolve(r(e[n],n,e)).then(function(e){return t(),e},o.reject);i.push(u),f--,c++}else d.all(i).then(o.resolve,o.reject)}var o=d.defer(),i=[],f=n?+n.concurrency:0;if(0==f||f!=f){for(var u in e)i.push(r(e[u],u,e));return d.all(i).then(o.resolve,o.reject),o.promise}var c=0,s=function(){var r=[];for(var n in e)r.push(n);return r}();do t();while(f>0&&c<s.length);return o.promise}),t("race")&&(d.race=l),t("any")&&(d.any=l),t("nfcall")&&(d.nfcall=p),t("nfapply")&&(d.nfapply=function(e,r){var n=this===d?null:this,t=d.defer();if(!i(r))throw"args TypeError";return r.push(a(t)),e.apply(n,r),t.promise}),d.denodeify=function(e){var r=this===d?null:this;return function(){return p.call(r,e,s(arguments))}},d}var o=e("./utils"),i=o.isArray,f=o.isEmpty,u=o.isFunction,c=o.isPlainObject,s=o.arg2arr;r.exports=t},{"./utils":5}],3:[function(e,r,n){function t(e){var r=e.prototype;return r.done=function(e,r){this.then(function(r){"function"==typeof e&&setTimeout(function(){e(r)},0)},function(e){if("function"!=typeof r)throw e;setTimeout(function(){r(e)},0)})},r.spread=function(e,r){return this.then(function(r){return e.apply(null,r)},r)},r.fail=r.catch=function(e){return this.then(null,e)},r.catchOf=function(e,r){return r=r||e,this.then(null,function(n){var t=typeof r;if("function"!=t)throw n;if(e===r)return r(n);if(e===n||"function"==typeof e&&n instanceof e)return r(n);throw n})},r.error=function(e){return this.catchOf(Error,e)},r.fin=r.finally=function(e){var r=function(r,n){try{e(r,n)}catch(e){}};return this.then(function(e){return r(e),e},function(e){throw r(null,e),e})},e}r.exports=t},{}],4:[function(e,r,n){r.exports=function(r){return e("../src/extendClass")(r),e("../src/extendPrototype")(r),r}},{"../src/extendClass":2,"../src/extendPrototype":3}],5:[function(e,r,n){"use strict";n.isPlainObject=function(e){return null!==e&&"object"==typeof e&&!e.nodeType&&e!==e.window&&!(e.constructor&&!Object.prototype.hasOwnProperty.call(e.constructor.prototype,"isPrototypeOf"))},n.isArray=function(e){return"[objece Array]"==Object.prototype.toString.call(e)},n.isFunction=function(e){return"function"==typeof e},n.isEmpty=function(e){return"undefined"==typeof e||null===e},n.arg2arr=function(e,r,n){return Array.prototype.slice.call(e,r,n)}},{}]},{},[1]); |
/*! | ||
* extend-promise v0.0.2 | ||
* extend-promise v0.0.3 | ||
* Homepage https://github.com/cnwhy/extend-promise#readme | ||
* License BSD | ||
* License BSD-2-Clause | ||
*/ | ||
@@ -24,9 +24,8 @@ (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ | ||
"use strict"; | ||
//参考官方代码示例改动 | ||
module.exports = function(nextTick){ | ||
var FUN = function(){}; | ||
function Resolve(promise, x) { | ||
if(x instanceof Promise_){ | ||
if(isPromise(x)){ | ||
x.then(promise.resolve,promise.reject) | ||
}; | ||
if (x && (typeof x === 'function' || typeof x === 'object')) { | ||
}else if (x && (typeof x === 'function' || typeof x === 'object')) { | ||
var called = false,then; | ||
@@ -59,2 +58,13 @@ try { | ||
function isPromise(obj){ | ||
return obj instanceof Promise_; | ||
} | ||
function bind(fun,self){ | ||
var arg = Array.prototype.slice.call(arguments,2); | ||
return function(){ | ||
fun.apply(self,arg.concat(Array.prototype.slice.call(arguments))); | ||
} | ||
} | ||
function Promise_(fun){ | ||
@@ -66,2 +76,3 @@ //var defer = this.defer = new Defer(this); | ||
var lock = false; | ||
function _resolve(value){ | ||
@@ -73,3 +84,4 @@ changeStatus.call(self,1,value) | ||
} | ||
this.resolve = function(value){ | ||
function resolve(value){ | ||
if(lock) return; | ||
@@ -80,9 +92,5 @@ lock = true; | ||
} | ||
// if(value instanceof Promise_){ | ||
// value.then(_resolve,_reject) | ||
// }else{ | ||
Resolve({resolve:_resolve,reject:_reject},value) | ||
//} | ||
} | ||
this.reject = function(reason){ | ||
function reject(reason){ | ||
if(lock) return; | ||
@@ -92,3 +100,7 @@ lock = true; | ||
} | ||
if(typeof fun == "function"){ | ||
this.resolve = resolve; | ||
this.reject = reject; | ||
if(fun !== FUN && typeof fun == "function"){ | ||
try{ | ||
@@ -103,11 +115,7 @@ fun(this.resolve,this.reject); | ||
Promise_.defer = function(){ | ||
var _resolve,_reject; | ||
var _promise = new Promise_(function(ok,no){ | ||
_resolve = ok; | ||
_reject = no; | ||
}); | ||
var _promise = new Promise_(FUN); | ||
return { | ||
promise: _promise, | ||
resolve: _resolve, | ||
reject: _reject | ||
resolve: _promise.resolve, | ||
reject: _promise.reject | ||
} | ||
@@ -117,3 +125,3 @@ } | ||
Promise_.resolve = function(obj){ | ||
if(obj instanceof Promise_) return obj; | ||
if(isPromise(obj)) return obj; | ||
return new Promise_(function(ok,no){ | ||
@@ -130,2 +138,6 @@ ok(obj); | ||
Promise.prototype.toString = function () { | ||
return "[object Promise]"; | ||
} | ||
Promise_.prototype.then = function(ok,no){ | ||
@@ -136,15 +148,15 @@ var status = this.status; | ||
// if(!~status){ | ||
// this.events.push([ok,no,promise]); | ||
// }else if(status && typeof ok == "function"){ | ||
// runThen(ok,this.value,promise,status); | ||
// }else if(!status && typeof no == "function"){ | ||
// runThen(no,this.reason,promise,status) | ||
// }else{ | ||
// if(status) defer.resolve(this.value) | ||
// else defer.reject(this.reason); | ||
// } | ||
if(!~status){ | ||
this._events.push([ok,no,promise]); | ||
}else if(status && typeof ok == "function"){ | ||
runThen(ok,this.value,promise,status); | ||
}else if(!status && typeof no == "function"){ | ||
runThen(no,this.reason,promise,status) | ||
}else{ | ||
if(status) defer.resolve(this.value) | ||
else defer.reject(this.reason); | ||
} | ||
this._events.push([ok,no,promise]); | ||
runThens.call(this) | ||
// this._events.push([ok,no,promise]); | ||
// runThens.call(this) | ||
return promise; | ||
@@ -162,5 +174,3 @@ } | ||
} | ||
nextTick(function(){ | ||
runThens.call(self) | ||
}) | ||
runThens.call(self) | ||
} | ||
@@ -174,3 +184,4 @@ | ||
,FnNumb = self.status ? 0 : 1; | ||
while(_event.length){ | ||
//while(_event.length){ | ||
for(var i=0; i<_event.length; i++){ | ||
(function(eArr){ | ||
@@ -181,12 +192,15 @@ var resolve,reject | ||
runThen(fn,arg,nextQ,self.status); | ||
})(_event.shift()) | ||
})(_event[i]) | ||
// })(_event.shift()) | ||
} | ||
_event = []; | ||
} | ||
function runThen(fn,arg,nextQ,status){ | ||
var resolve,reject | ||
if(nextQ){ | ||
resolve = nextQ.resolve | ||
reject = nextQ.reject | ||
} | ||
var resolve = nextQ.resolve | ||
,reject = nextQ.reject | ||
// if(nextQ){ | ||
// resolve = nextQ.resolve | ||
// reject = nextQ.reject | ||
// } | ||
if(typeof fn == 'function'){ | ||
@@ -198,9 +212,10 @@ nextTick(function(){ | ||
}catch(e){ | ||
if(reject) reject(e) | ||
else throw e; | ||
reject(e) | ||
// if(reject) | ||
// else throw e; | ||
return; | ||
} | ||
if(resolve) resolve(nextPromise); | ||
resolve(nextPromise); | ||
}) | ||
}else if(nextQ){ | ||
}else{ | ||
if (status) resolve(arg) | ||
@@ -216,14 +231,14 @@ else reject(arg) | ||
},{"../src/polyfills":7,"easy-promise/setTimeout":2}],5:[function(require,module,exports){ | ||
function isPlainObject(obj) { | ||
if (obj === null || typeof(obj) !== "object" || obj.nodeType || (obj === obj.window)) { | ||
return false; | ||
} | ||
if (obj.constructor && !Object.prototype.hasOwnProperty.call(obj.constructor.prototype, "isPrototypeOf")) { | ||
return false; | ||
} | ||
return true; | ||
} | ||
function extendClass(Promise,obj){ | ||
var QClass; | ||
'use strict'; | ||
var utils = require('./utils') | ||
var isArray = utils.isArray | ||
,isEmpty = utils.isEmpty | ||
,isFunction = utils.isFunction | ||
,isPlainObject = utils.isPlainObject | ||
,arg2arr = utils.arg2arr | ||
function extendClass(Promise,obj,funnames){ | ||
var QClass,source; | ||
if(obj){ | ||
source = true | ||
QClass = obj; | ||
@@ -234,8 +249,25 @@ }else{ | ||
function asbind(name){ | ||
if(isArray(funnames)){ | ||
var nomark = false; | ||
for(var i = 0; i<funnames.length; i++){ | ||
if(funnames[i] == name){ | ||
nomark = true; | ||
break; | ||
} | ||
} | ||
if(!nomark) return false; | ||
} | ||
if(source){ | ||
return !isFunction(QClass[name]); | ||
} | ||
return true; | ||
} | ||
if(!QClass.Promise && Promise != obj) QClass.Promise = Promise; | ||
//defer | ||
if(typeof Promise.defer == "function"){ | ||
if(isFunction(Promise.defer)){ | ||
QClass.defer = Promise.defer | ||
}else if(typeof Promise.deferred == "function"){ | ||
}else if(isFunction(Promise.deferred)){ | ||
QClass.defer = Promise.deferred | ||
@@ -258,5 +290,3 @@ }else{ | ||
//delay | ||
if(typeof Promise.delay == "function"){ | ||
QClass.delay = Promise.delay; | ||
}else{ | ||
if(asbind("delay")){ | ||
QClass.delay = function(ms,value){ | ||
@@ -270,5 +300,3 @@ var defer = QClass.defer(); | ||
//resolve | ||
if(typeof Promise.resolve == "function"){ | ||
QClass.resolve = Promise.resolve; | ||
}else{ | ||
if(asbind("resolve")){ | ||
QClass.resolve = function(obj){ | ||
@@ -282,5 +310,3 @@ var defer = QClass.defer(); | ||
//reject | ||
if(typeof Promise.reject == "function"){ | ||
QClass.reject = Promise.reject; | ||
}else{ | ||
if(asbind("reject")){ | ||
QClass.reject = function(obj){ | ||
@@ -294,3 +320,5 @@ var defer = QClass.defer(); | ||
function getall(map,count){ | ||
count = +count > 0 ? +count : 0; | ||
if(!isEmpty(count)){ | ||
count = +count > 0 ? +count : 0; | ||
} | ||
return function(promises) { | ||
@@ -302,3 +330,3 @@ var defer = QClass.defer(); | ||
QClass.resolve(_p).then(function(d) { | ||
if(map || !count (count && data.length<count)) data[i] = d; | ||
data[i] = d; | ||
if (--_tempI == 0 || (!map && count && data.length>=count)) { | ||
@@ -308,3 +336,3 @@ defer.resolve(data); | ||
}, function(err) { | ||
if (typeof count == "undefined") { | ||
if (isEmpty(count)) { | ||
defer.reject(err); | ||
@@ -317,3 +345,3 @@ }else if(--_tempI == 0){ | ||
} | ||
if(Object.prototype.toString.call(promises) === '[object Array]'){ | ||
if(isArray(promises)){ | ||
data = []; | ||
@@ -336,22 +364,18 @@ for(var i = 0; i<promises.length; i++){ | ||
//all | ||
if(typeof Promise.all == "function"){ | ||
QClass.all = Promise.all; | ||
}else{ | ||
if(asbind("all")){ | ||
QClass.all = getall() | ||
} | ||
if (typeof Promise.allMap == "function") { | ||
QClass.allMap = Promise.allMap; | ||
} else { | ||
if(asbind("allMap")){ | ||
QClass.allMap = getall(true); | ||
} | ||
QClass.some = function(proArr,count){ | ||
return getall(false,count||0)(proArr) | ||
if(asbind("some")){ | ||
QClass.some = function(proArr,count){ | ||
return getall(false,count||0)(proArr) | ||
} | ||
} | ||
//map | ||
if(typeof Promise.map == "function"){ | ||
QClass.map = Promise.map; | ||
}else{ | ||
if(asbind("map")){ | ||
QClass.map = function(data,mapfun,options){ | ||
@@ -399,27 +423,28 @@ var defer = QClass.defer(); | ||
//any | race | ||
if(typeof Promise.race == "function"){ | ||
QClass.race = QClass.any = Promise.race; | ||
}else if(typeof Promise.any == "function"){ | ||
QClass.race = QClass.any = Promise.any | ||
}else{ | ||
QClass.race = QClass.any = function(proArr) { | ||
var defer = QClass.defer(); | ||
for (var i = 0; i < proArr.length; i++) { | ||
+ function() { | ||
var _i = i; | ||
//nextTick(function() { | ||
var _p = proArr[_i]; | ||
QClass.resolve(_p).then(function(data) { | ||
defer.resolve(data); | ||
}, function(err) { | ||
defer.reject(err); | ||
}) | ||
//}, 0) | ||
}() | ||
} | ||
return defer.promise; | ||
function race(proArr) { | ||
var defer = QClass.defer(); | ||
for (var i = 0; i < proArr.length; i++) { | ||
+ function() { | ||
var _i = i; | ||
//nextTick(function() { | ||
var _p = proArr[_i]; | ||
QClass.resolve(_p).then(function(data) { | ||
defer.resolve(data); | ||
}, function(err) { | ||
defer.reject(err); | ||
}) | ||
//}, 0) | ||
}() | ||
} | ||
return defer.promise; | ||
} | ||
//any | race | ||
if(asbind("race")){ | ||
QClass.race = race; | ||
} | ||
if(asbind("any")){ | ||
QClass.any = race; | ||
} | ||
/*封装CPS*/ | ||
@@ -433,21 +458,27 @@ //callback Adapter | ||
} | ||
QClass.nfcall = function(f){ | ||
function nfcall(f){ | ||
var _this = this === QClass ? null : this; | ||
var defer = QClass.defer(); | ||
var argsArray = Array.prototype.slice.call(arguments,1) | ||
var argsArray = arg2arr(arguments,1) | ||
argsArray.push(cbAdapter(defer)) | ||
f.apply(_this,argsArray) | ||
return defer.promise; | ||
} | ||
QClass.nfapply = function(f,args){ | ||
var _this = this === QClass ? null : this; | ||
var defer = QClass.defer(); | ||
if(Object.prototype.toString.call(args) === '[object Array]'){ | ||
args.push(cbAdapter(defer)); | ||
f.apply(_this,args) | ||
}else{ | ||
throw "args TypeError" | ||
if(asbind("nfcall")){ | ||
QClass.nfcall = nfcall; | ||
} | ||
if(asbind("nfapply")){ | ||
QClass.nfapply = function(f,args){ | ||
var _this = this === QClass ? null : this; | ||
var defer = QClass.defer(); | ||
if(isArray(args)){ | ||
args.push(cbAdapter(defer)); | ||
f.apply(_this,args) | ||
}else{ | ||
throw "args TypeError" | ||
} | ||
return defer.promise; | ||
} | ||
return defer.promise; | ||
} | ||
@@ -458,3 +489,3 @@ | ||
return function(){ | ||
return QClass.nfapply.call(_this,f,Array.prototype.slice.call(arguments)) | ||
return nfcall.call(_this,f,arg2arr(arguments)) | ||
} | ||
@@ -465,3 +496,3 @@ } | ||
module.exports = extendClass; | ||
},{}],6:[function(require,module,exports){ | ||
},{"./utils":8}],6:[function(require,module,exports){ | ||
function extendPrototype(Promise){ | ||
@@ -492,3 +523,3 @@ var prototype = Promise.prototype; | ||
*/ | ||
Prototype.catchOf = function(errType,fn){ | ||
prototype.catchOf = function(errType,fn){ | ||
fn = fn || errType; | ||
@@ -536,2 +567,29 @@ return this.then(null,function(err){ | ||
} | ||
},{"../src/extendClass":5,"../src/extendPrototype":6}]},{},[1]) | ||
},{"../src/extendClass":5,"../src/extendPrototype":6}],8:[function(require,module,exports){ | ||
'use strict'; | ||
exports.isPlainObject = function(obj) { | ||
if (obj === null || typeof(obj) !== "object" || obj.nodeType || (obj === obj.window)) { | ||
return false; | ||
} | ||
if (obj.constructor && !Object.prototype.hasOwnProperty.call(obj.constructor.prototype, "isPrototypeOf")) { | ||
return false; | ||
} | ||
return true; | ||
} | ||
exports.isArray = function(obj){ | ||
return Object.prototype.toString.call(obj) == "[objece Array]" | ||
} | ||
exports.isFunction = function(obj){ | ||
return typeof obj == "function" | ||
} | ||
exports.isEmpty = function(obj){ | ||
return typeof obj == 'undefined' || obj === null; | ||
} | ||
exports.arg2arr = function(arg,b,s){ | ||
return Array.prototype.slice.call(arg,b,s); | ||
} | ||
},{}]},{},[1]) |
/*! | ||
* extend-promise v0.0.2 | ||
* extend-promise v0.0.3 | ||
* Homepage https://github.com/cnwhy/extend-promise#readme | ||
* License BSD | ||
* License BSD-2-Clause | ||
*/ | ||
!function e(t,n,r){function o(f,u){if(!n[f]){if(!t[f]){var c="function"==typeof require&&require;if(!u&&c)return c(f,!0);if(i)return i(f,!0);throw new Error("Cannot find module '"+f+"'")}var s=n[f]={exports:{}};t[f][0].call(s.exports,function(e){var n=t[f][1][e];return o(n?n:e)},s,s.exports,e,t,n,r)}return n[f].exports}for(var i="function"==typeof require&&require,f=0;f<r.length;f++)o(r[f]);return o}({1:[function(e,t,n){!function(e,t){if("function"==typeof define&&(define.amd||define.cmd))define([],t);else{if("undefined"==typeof window&&"undefined"==typeof self)throw new Error("加载 "+e+" 模块失败!,请检查您的环境!");var n="undefined"!=typeof window?window:self;n[e]=t()}}("Promise",function(){var t=e("../promise/setTimeout");return t})},{"../promise/setTimeout":4}],2:[function(e,t,n){t.exports=e("./src")(function(e){setTimeout(e,0)})},{"./src":3}],3:[function(e,t,n){"use strict";t.exports=function(e){function t(e,r){if(r instanceof n&&r.then(e.resolve,e.reject),!r||"function"!=typeof r&&"object"!=typeof r)e.resolve(r);else{var o,i=!1;try{o=r.then,"function"==typeof o?o.call(r,function(n){i||(i=!0,t(e,n))},function(t){i||(i=!0,e.reject(t))}):e.resolve(r)}catch(t){i||(i=!0,e.reject(t))}}}function n(e){function n(e){r.call(i,1,e)}function o(e){r.call(i,0,e)}var i=this;this.status=-1,this._events=[];var f=!1;if(this.resolve=function(e){if(!f)return f=!0,i===e?o(new TypeError("The promise and its value refer to the same object")):void t({resolve:n,reject:o},e)},this.reject=function(e){f||(f=!0,o(e))},"function"==typeof e)try{e(this.resolve,this.reject)}catch(e){this.reject(e)}}function r(t,n){var r=this;~this.status||(this.status=t,t?this.value=n:this.reason=n,e(function(){o.call(r)}))}function o(){if(~this.status)for(var e=this,t=e._events,n=e.status?e.value:e.reason,r=e.status?0:1;t.length;)!function(t){var o=t[r],f=t[2];i(o,n,f,e.status)}(t.shift())}function i(t,n,r,o){var i,f;r&&(i=r.resolve,f=r.reject),"function"==typeof t?e(function(){var e;try{e=t(n)}catch(e){if(!f)throw e;return void f(e)}i&&i(e)}):r&&(o?i(n):f(n))}return n.defer=function(){var e,t,r=new n(function(n,r){e=n,t=r});return{promise:r,resolve:e,reject:t}},n.resolve=function(e){return e instanceof n?e:new n(function(t,n){t(e)})},n.reject=function(e){return new n(function(t,n){n(e)})},n.prototype.then=function(e,t){var r=(this.status,n.defer()),i=r.promise;return this._events.push([e,t,i]),o.call(this),i},n}},{}],4:[function(e,t,n){var r=e("easy-promise/setTimeout");t.exports=e("../src/polyfills")(r)},{"../src/polyfills":7,"easy-promise/setTimeout":2}],5:[function(e,t,n){function r(e){return null!==e&&"object"==typeof e&&!e.nodeType&&e!==e.window&&!(e.constructor&&!Object.prototype.hasOwnProperty.call(e.constructor.prototype,"isPrototypeOf"))}function o(e,t){function n(e,t){return t=+t>0?+t:0,function(n){var o,f=i.defer(),u=0,c=function(r){var c=n[r];i.resolve(c).then(function(n){!e&&t(t&&o.length<t)||(o[r]=n),(0==--u||!e&&t&&o.length>=t)&&f.resolve(o)},function(e){"undefined"==typeof t?f.reject(e):0==--u&&f.resolve(o)}),u++};if("[object Array]"===Object.prototype.toString.call(n)){o=[];for(var s=0;s<n.length;s++)c(s)}else if(e&&r(n)){o={};for(var s in n)c(s)}else f.reject(new TypeError);return f.promise}}function o(e){return function(t,n){return t?e.reject(t):void e.resolve(n)}}var i;return i=t?t:e,i.Promise||e==t||(i.Promise=e),"function"==typeof e.defer?i.defer=e.defer:"function"==typeof e.deferred?i.defer=e.deferred:i.defer=function(){var t,n,r=new e(function(e,r){t=e,n=r});return{promise:r,resolve:t,reject:n}},"function"==typeof e.delay?i.delay=e.delay:i.delay=function(e,t){var n=i.defer();return setTimeout(n.resolve,e,t),n.promise},"function"==typeof e.resolve?i.resolve=e.resolve:i.resolve=function(e){var t=i.defer();return t.resolve(e),t.promise},"function"==typeof e.reject?i.reject=e.reject:i.reject=function(e){var t=i.defer();return t.reject(e),t.promise},"function"==typeof e.all?i.all=e.all:i.all=n(),"function"==typeof e.allMap?i.allMap=e.allMap:i.allMap=n(!0),i.some=function(e,t){return n(!1,t||0)(e)},"function"==typeof e.map?i.map=e.map:i.map=function(e,t,n){function r(){if(s<a.length){var n=a[s],c=i.resolve(t(e[n],n,e)).then(function(e){return r(),e},o.reject);f.push(c),u--,s++}else i.all(f).then(o.resolve,o.reject)}var o=i.defer(),f=[],u=n?+n.concurrency:0;if(0==u||u!=u){for(var c in e)f.push(t(e[c],c,e));return i.all(f).then(o.resolve,o.reject),o.promise}var s=0,a=function(){var t=[];for(var n in e)t.push(n);return t}();do r();while(u>0&&s<a.length);return o.promise},"function"==typeof e.race?i.race=i.any=e.race:"function"==typeof e.any?i.race=i.any=e.any:i.race=i.any=function(e){for(var t=i.defer(),n=0;n<e.length;n++)+function(){var r=n,o=e[r];i.resolve(o).then(function(e){t.resolve(e)},function(e){t.reject(e)})}();return t.promise},i.nfcall=function(e){var t=this===i?null:this,n=i.defer(),r=Array.prototype.slice.call(arguments,1);return r.push(o(n)),e.apply(t,r),n.promise},i.nfapply=function(e,t){var n=this===i?null:this,r=i.defer();if("[object Array]"!==Object.prototype.toString.call(t))throw"args TypeError";return t.push(o(r)),e.apply(n,t),r.promise},i.denodeify=function(e){var t=this===i?null:this;return function(){return i.nfapply.call(t,e,Array.prototype.slice.call(arguments))}},i}t.exports=o},{}],6:[function(e,t,n){function r(e){var t=e.prototype;return t.done=function(e,t){this.then(function(t){"function"==typeof e&&setTimeout(function(){e(t)},0)},function(e){if("function"!=typeof t)throw e;setTimeout(function(){t(e)},0)})},t.spread=function(e,t){return this.then(function(t){return e.apply(null,t)},t)},t.fail=t.catch=function(e){return this.then(null,e)},Prototype.catchOf=function(e,t){return t=t||e,this.then(null,function(n){var r=typeof t;if("function"!=r)throw n;if(e===t)return t(n);if(e===n||"function"==typeof e&&n instanceof e)return t(n);throw n})},t.error=function(e){return this.catchOf(Error,e)},t.fin=t.finally=function(e){var t=function(t,n){try{e(t,n)}catch(e){}};return this.then(function(e){return t(e),e},function(e){throw t(null,e),e})},e}t.exports=r},{}],7:[function(e,t,n){t.exports=function(t){return e("../src/extendClass")(t),e("../src/extendPrototype")(t),t}},{"../src/extendClass":5,"../src/extendPrototype":6}]},{},[1]); | ||
!function e(t,n,r){function o(u,f){if(!n[u]){if(!t[u]){var c="function"==typeof require&&require;if(!f&&c)return c(u,!0);if(i)return i(u,!0);throw new Error("Cannot find module '"+u+"'")}var s=n[u]={exports:{}};t[u][0].call(s.exports,function(e){var n=t[u][1][e];return o(n?n:e)},s,s.exports,e,t,n,r)}return n[u].exports}for(var i="function"==typeof require&&require,u=0;u<r.length;u++)o(r[u]);return o}({1:[function(e,t,n){!function(e,t){if("function"==typeof define&&(define.amd||define.cmd))define([],t);else{if("undefined"==typeof window&&"undefined"==typeof self)throw new Error("加载 "+e+" 模块失败!,请检查您的环境!");var n="undefined"!=typeof window?window:self;n[e]=t()}}("Promise",function(){var t=e("../promise/setTimeout");return t})},{"../promise/setTimeout":4}],2:[function(e,t,n){t.exports=e("./src")(function(e){setTimeout(e,0)})},{"./src":3}],3:[function(e,t,n){"use strict";t.exports=function(e){function t(e,r){if(n(r))r.then(e.resolve,e.reject);else if(!r||"function"!=typeof r&&"object"!=typeof r)e.resolve(r);else{var o,i=!1;try{o=r.then,"function"==typeof o?o.call(r,function(n){i||(i=!0,t(e,n))},function(t){i||(i=!0,e.reject(t))}):e.resolve(r)}catch(t){i||(i=!0,e.reject(t))}}}function n(e){return e instanceof r}function r(e){function n(e){o.call(c,1,e)}function r(e){o.call(c,0,e)}function i(e){if(!s)return s=!0,c===e?r(new TypeError("The promise and its value refer to the same object")):void t({resolve:n,reject:r},e)}function u(e){s||(s=!0,r(e))}var c=this;this.status=-1,this._events=[];var s=!1;if(this.resolve=i,this.reject=u,e!==f&&"function"==typeof e)try{e(this.resolve,this.reject)}catch(e){this.reject(e)}}function o(e,t){var n=this;~this.status||(this.status=e,e?this.value=t:this.reason=t,i.call(n))}function i(){if(~this.status){for(var e=this,t=e._events,n=e.status?e.value:e.reason,r=e.status?0:1,o=0;o<t.length;o++)!function(t){var o=t[r],i=t[2];u(o,n,i,e.status)}(t[o]);t=[]}}function u(t,n,r,o){var i=r.resolve,u=r.reject;"function"==typeof t?e(function(){var e;try{e=t(n)}catch(e){return void u(e)}i(e)}):o?i(n):u(n)}var f=function(){};return r.defer=function(){var e=new r(f);return{promise:e,resolve:e.resolve,reject:e.reject}},r.resolve=function(e){return n(e)?e:new r(function(t,n){t(e)})},r.reject=function(e){return new r(function(t,n){n(e)})},Promise.prototype.toString=function(){return"[object Promise]"},r.prototype.then=function(e,t){var n=this.status,o=r.defer(),i=o.promise;return~n?n&&"function"==typeof e?u(e,this.value,i,n):n||"function"!=typeof t?n?o.resolve(this.value):o.reject(this.reason):u(t,this.reason,i,n):this._events.push([e,t,i]),i},r}},{}],4:[function(e,t,n){var r=e("easy-promise/setTimeout");t.exports=e("../src/polyfills")(r)},{"../src/polyfills":7,"easy-promise/setTimeout":2}],5:[function(e,t,n){"use strict";function r(e,t,n){function r(e){if(i(n)){for(var t=!1,r=0;r<n.length;r++)if(n[r]==e){t=!0;break}if(!t)return!1}return!h||!f(v[e])}function o(e,t){return u(t)||(t=+t>0?+t:0),function(n){var r,o=v.defer(),f=0,s=function(i){var c=n[i];v.resolve(c).then(function(n){r[i]=n,(0==--f||!e&&t&&r.length>=t)&&o.resolve(r)},function(e){u(t)?o.reject(e):0==--f&&o.resolve(r)}),f++};if(i(n)){r=[];for(var a=0;a<n.length;a++)s(a)}else if(e&&c(n)){r={};for(var a in n)s(a)}else o.reject(new TypeError);return o.promise}}function a(e){for(var t=v.defer(),n=0;n<e.length;n++)+function(){var r=n,o=e[r];v.resolve(o).then(function(e){t.resolve(e)},function(e){t.reject(e)})}();return t.promise}function l(e){return function(t,n){return t?e.reject(t):void e.resolve(n)}}function p(e){var t=this===v?null:this,n=v.defer(),r=s(arguments,1);r.push(l(n)),e.apply(t,r)}var v,h;return t?(h=!0,v=t):v=e,v.Promise||e==t||(v.Promise=e),f(e.defer)?v.defer=e.defer:f(e.deferred)?v.defer=e.deferred:v.defer=function(){var t,n,r=new e(function(e,r){t=e,n=r});return{promise:r,resolve:t,reject:n}},r("delay")&&(v.delay=function(e,t){var n=v.defer();return setTimeout(n.resolve,e,t),n.promise}),r("resolve")&&(v.resolve=function(e){var t=v.defer();return t.resolve(e),t.promise}),r("reject")&&(v.reject=function(e){var t=v.defer();return t.reject(e),t.promise}),r("all")&&(v.all=o()),r("allMap")&&(v.allMap=o(!0)),r("some")&&(v.some=function(e,t){return o(!1,t||0)(e)}),r("map")&&(v.map=function(e,t,n){function r(){if(c<s.length){var n=s[c],f=v.resolve(t(e[n],n,e)).then(function(e){return r(),e},o.reject);i.push(f),u--,c++}else v.all(i).then(o.resolve,o.reject)}var o=v.defer(),i=[],u=n?+n.concurrency:0;if(0==u||u!=u){for(var f in e)i.push(t(e[f],f,e));return v.all(i).then(o.resolve,o.reject),o.promise}var c=0,s=function(){var t=[];for(var n in e)t.push(n);return t}();do r();while(u>0&&c<s.length);return o.promise}),r("race")&&(v.race=a),r("any")&&(v.any=a),r("nfcall")&&(v.nfcall=p),r("nfapply")&&(v.nfapply=function(e,t){var n=this===v?null:this,r=v.defer();if(!i(t))throw"args TypeError";return t.push(l(r)),e.apply(n,t),r.promise}),v.denodeify=function(e){var t=this===v?null:this;return function(){return p.call(t,e,s(arguments))}},v}var o=e("./utils"),i=o.isArray,u=o.isEmpty,f=o.isFunction,c=o.isPlainObject,s=o.arg2arr;t.exports=r},{"./utils":8}],6:[function(e,t,n){function r(e){var t=e.prototype;return t.done=function(e,t){this.then(function(t){"function"==typeof e&&setTimeout(function(){e(t)},0)},function(e){if("function"!=typeof t)throw e;setTimeout(function(){t(e)},0)})},t.spread=function(e,t){return this.then(function(t){return e.apply(null,t)},t)},t.fail=t.catch=function(e){return this.then(null,e)},t.catchOf=function(e,t){return t=t||e,this.then(null,function(n){var r=typeof t;if("function"!=r)throw n;if(e===t)return t(n);if(e===n||"function"==typeof e&&n instanceof e)return t(n);throw n})},t.error=function(e){return this.catchOf(Error,e)},t.fin=t.finally=function(e){var t=function(t,n){try{e(t,n)}catch(e){}};return this.then(function(e){return t(e),e},function(e){throw t(null,e),e})},e}t.exports=r},{}],7:[function(e,t,n){t.exports=function(t){return e("../src/extendClass")(t),e("../src/extendPrototype")(t),t}},{"../src/extendClass":5,"../src/extendPrototype":6}],8:[function(e,t,n){"use strict";n.isPlainObject=function(e){return null!==e&&"object"==typeof e&&!e.nodeType&&e!==e.window&&!(e.constructor&&!Object.prototype.hasOwnProperty.call(e.constructor.prototype,"isPrototypeOf"))},n.isArray=function(e){return"[objece Array]"==Object.prototype.toString.call(e)},n.isFunction=function(e){return"function"==typeof e},n.isEmpty=function(e){return"undefined"==typeof e||null===e},n.arg2arr=function(e,t,n){return Array.prototype.slice.call(e,t,n)}},{}]},{},[1]); |
{ | ||
"name": "extend-promise", | ||
"version": "0.0.2", | ||
"version": "0.0.5", | ||
"description": "基于promise扩展一些常用方法", | ||
@@ -20,3 +20,3 @@ "main": "index.js", | ||
}, | ||
"license": "BSD", | ||
"license": "BSD-2-Clause", | ||
"bugs": { | ||
@@ -34,7 +34,7 @@ "url": "https://github.com/cnwhy/extend-promise/issues" | ||
"istanbul": "^0.4.5", | ||
"mocha": "^3.2.0" | ||
"mocha": "^3.2.0", | ||
"easy-promise": "0.0.3" | ||
}, | ||
"dependencies": { | ||
"easy-promise": "0.0.1" | ||
} | ||
} |
@@ -1,13 +0,13 @@ | ||
function isPlainObject(obj) { | ||
if (obj === null || typeof(obj) !== "object" || obj.nodeType || (obj === obj.window)) { | ||
return false; | ||
} | ||
if (obj.constructor && !Object.prototype.hasOwnProperty.call(obj.constructor.prototype, "isPrototypeOf")) { | ||
return false; | ||
} | ||
return true; | ||
} | ||
function extendClass(Promise,obj){ | ||
var QClass; | ||
'use strict'; | ||
var utils = require('./utils') | ||
var isArray = utils.isArray | ||
,isEmpty = utils.isEmpty | ||
,isFunction = utils.isFunction | ||
,isPlainObject = utils.isPlainObject | ||
,arg2arr = utils.arg2arr | ||
function extendClass(Promise,obj,funnames){ | ||
var QClass,source; | ||
if(obj){ | ||
source = true | ||
QClass = obj; | ||
@@ -18,10 +18,23 @@ }else{ | ||
function asbind(name){ | ||
if(isArray(funnames)){ | ||
var nomark = false; | ||
for(var i = 0; i<funnames.length; i++){ | ||
if(funnames[i] == name){ | ||
nomark = true; | ||
break; | ||
} | ||
} | ||
if(!nomark) return false; | ||
} | ||
if(source){ | ||
return !isFunction(QClass[name]); | ||
} | ||
return true; | ||
} | ||
if(!QClass.Promise && Promise != obj) QClass.Promise = Promise; | ||
//defer | ||
if(typeof Promise.defer == "function"){ | ||
QClass.defer = Promise.defer | ||
}else if(typeof Promise.deferred == "function"){ | ||
QClass.defer = Promise.deferred | ||
}else{ | ||
if(isFunction(Promise) && isFunction(Promise.prototype.then)){ | ||
QClass.defer = function() { | ||
@@ -39,11 +52,17 @@ var resolve, reject; | ||
} | ||
}else if(isFunction(Promise.defer)){ | ||
QClass.defer = function(){return Promise.defer();} | ||
}else if(isFunction(Promise.deferred)){ | ||
QClass.defer = function(){return Promise.deferred();} | ||
}else{ | ||
throw new TypeError("此类不支持扩展!") | ||
} | ||
//delay | ||
if(typeof Promise.delay == "function"){ | ||
QClass.delay = Promise.delay; | ||
}else{ | ||
if(asbind("delay")){ | ||
QClass.delay = function(ms,value){ | ||
var defer = QClass.defer(); | ||
setTimeout(defer.resolve,ms,value) | ||
setTimeout(function(){ | ||
defer.resolve(value); | ||
},ms) | ||
return defer.promise; | ||
@@ -54,5 +73,3 @@ } | ||
//resolve | ||
if(typeof Promise.resolve == "function"){ | ||
QClass.resolve = Promise.resolve; | ||
}else{ | ||
if(asbind("resolve")){ | ||
QClass.resolve = function(obj){ | ||
@@ -66,5 +83,3 @@ var defer = QClass.defer(); | ||
//reject | ||
if(typeof Promise.reject == "function"){ | ||
QClass.reject = Promise.reject; | ||
}else{ | ||
if(asbind("reject")){ | ||
QClass.reject = function(obj){ | ||
@@ -78,3 +93,5 @@ var defer = QClass.defer(); | ||
function getall(map,count){ | ||
count = +count > 0 ? +count : 0; | ||
if(!isEmpty(count)){ | ||
count = +count > 0 ? +count : 0; | ||
} | ||
return function(promises) { | ||
@@ -86,3 +103,3 @@ var defer = QClass.defer(); | ||
QClass.resolve(_p).then(function(d) { | ||
if(map || !count (count && data.length<count)) data[i] = d; | ||
data[i] = d; | ||
if (--_tempI == 0 || (!map && count && data.length>=count)) { | ||
@@ -92,3 +109,3 @@ defer.resolve(data); | ||
}, function(err) { | ||
if (typeof count == "undefined") { | ||
if (isEmpty(count)) { | ||
defer.reject(err); | ||
@@ -101,3 +118,3 @@ }else if(--_tempI == 0){ | ||
} | ||
if(Object.prototype.toString.call(promises) === '[object Array]'){ | ||
if(isArray(promises)){ | ||
data = []; | ||
@@ -113,3 +130,3 @@ for(var i = 0; i<promises.length; i++){ | ||
}else{ | ||
defer.reject(new TypeError()); | ||
defer.reject(new TypeError("参数错误")); | ||
} | ||
@@ -121,22 +138,18 @@ return defer.promise; | ||
//all | ||
if(typeof Promise.all == "function"){ | ||
QClass.all = Promise.all; | ||
}else{ | ||
if(asbind("all")){ | ||
QClass.all = getall() | ||
} | ||
if (typeof Promise.allMap == "function") { | ||
QClass.allMap = Promise.allMap; | ||
} else { | ||
if(asbind("allMap")){ | ||
QClass.allMap = getall(true); | ||
} | ||
QClass.some = function(proArr,count){ | ||
return getall(false,count||0)(proArr) | ||
if(asbind("some")){ | ||
QClass.some = function(proArr,count){ | ||
return getall(false,count||0)(proArr) | ||
} | ||
} | ||
//map | ||
if(typeof Promise.map == "function"){ | ||
QClass.map = Promise.map; | ||
}else{ | ||
if(asbind("map")){ | ||
QClass.map = function(data,mapfun,options){ | ||
@@ -184,27 +197,28 @@ var defer = QClass.defer(); | ||
//any | race | ||
if(typeof Promise.race == "function"){ | ||
QClass.race = QClass.any = Promise.race; | ||
}else if(typeof Promise.any == "function"){ | ||
QClass.race = QClass.any = Promise.any | ||
}else{ | ||
QClass.race = QClass.any = function(proArr) { | ||
var defer = QClass.defer(); | ||
for (var i = 0; i < proArr.length; i++) { | ||
+ function() { | ||
var _i = i; | ||
//nextTick(function() { | ||
var _p = proArr[_i]; | ||
QClass.resolve(_p).then(function(data) { | ||
defer.resolve(data); | ||
}, function(err) { | ||
defer.reject(err); | ||
}) | ||
//}, 0) | ||
}() | ||
} | ||
return defer.promise; | ||
function race(proArr) { | ||
var defer = QClass.defer(); | ||
for (var i = 0; i < proArr.length; i++) { | ||
+ function() { | ||
var _i = i; | ||
//nextTick(function() { | ||
var _p = proArr[_i]; | ||
QClass.resolve(_p).then(function(data) { | ||
defer.resolve(data); | ||
}, function(err) { | ||
defer.reject(err); | ||
}) | ||
//}, 0) | ||
}() | ||
} | ||
return defer.promise; | ||
} | ||
//any | race | ||
if(asbind("race")){ | ||
QClass.race = race; | ||
} | ||
if(asbind("any")){ | ||
QClass.any = race; | ||
} | ||
/*封装CPS*/ | ||
@@ -218,21 +232,27 @@ //callback Adapter | ||
} | ||
QClass.nfcall = function(f){ | ||
function nfcall(f){ | ||
var _this = this === QClass ? null : this; | ||
var defer = QClass.defer(); | ||
var argsArray = Array.prototype.slice.call(arguments,1) | ||
var argsArray = arg2arr(arguments,1) | ||
argsArray.push(cbAdapter(defer)) | ||
f.apply(_this,argsArray) | ||
return defer.promise; | ||
} | ||
QClass.nfapply = function(f,args){ | ||
var _this = this === QClass ? null : this; | ||
var defer = QClass.defer(); | ||
if(Object.prototype.toString.call(args) === '[object Array]'){ | ||
args.push(cbAdapter(defer)); | ||
f.apply(_this,args) | ||
}else{ | ||
throw "args TypeError" | ||
if(asbind("nfcall")){ | ||
QClass.nfcall = nfcall; | ||
} | ||
if(asbind("nfapply")){ | ||
QClass.nfapply = function(f,args){ | ||
var _this = this === QClass ? null : this; | ||
var defer = QClass.defer(); | ||
if(isArray(args)){ | ||
args.push(cbAdapter(defer)); | ||
f.apply(_this,args) | ||
}else{ | ||
throw TypeError('"args" is not Array') | ||
} | ||
return defer.promise; | ||
} | ||
return defer.promise; | ||
} | ||
@@ -243,3 +263,3 @@ | ||
return function(){ | ||
return QClass.nfapply.call(_this,f,Array.prototype.slice.call(arguments)) | ||
return nfcall.call(_this,f,arg2arr(arguments)) | ||
} | ||
@@ -246,0 +266,0 @@ } |
@@ -26,3 +26,3 @@ function extendPrototype(Promise){ | ||
*/ | ||
Prototype.catchOf = function(errType,fn){ | ||
prototype.catchOf = function(errType,fn){ | ||
fn = fn || errType; | ||
@@ -29,0 +29,0 @@ return this.then(null,function(err){ |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Misc. License Issues
License(Experimental) A package's licensing information has fine-grained problems.
Found 1 instance in 1 package
Non-permissive License
License(Experimental) A license not known to be considered permissive was found.
Found 1 instance in 1 package
61359
0
22
0
0
1643
9
- Removedeasy-promise@0.0.1
- Removedeasy-promise@0.0.1(transitive)