Comparing version 0.1.4 to 0.1.5
523
lib/vow.js
@@ -9,3 +9,3 @@ /** | ||
* | ||
* @version 0.1.4 | ||
* @version 0.1.5 | ||
*/ | ||
@@ -15,252 +15,255 @@ | ||
var nextTick = typeof process === 'object'? // nodejs | ||
process.nextTick : | ||
global.setImmediate? // ie10 | ||
global.setImmediate : | ||
global.postMessage? // modern browsers | ||
(function() { | ||
var fns = [], | ||
msg = '__promise' + +new Date; | ||
var nextTick = typeof process === 'object'? // nodejs | ||
process.nextTick : | ||
global.setImmediate? // ie10 | ||
global.setImmediate : | ||
global.postMessage? // modern browsers | ||
(function() { | ||
var fns = [], | ||
msg = '__promise' + +new Date, | ||
onMessage = function(e) { | ||
if(e.data === msg) { | ||
e.stopPropagation? | ||
e.stopPropagation() : | ||
e.cancelBubble = true; | ||
global.addEventListener( | ||
'message', | ||
function(e) { | ||
if(e.source === global && e.data === msg) { | ||
e.stopPropagation(); | ||
var callFns = fns, i = 0, len = fns.length; | ||
fns = []; | ||
while(i < len) { | ||
callFns[i++](); | ||
var callFns = fns, i = 0, len = fns.length; | ||
fns = []; | ||
while(i < len) { | ||
callFns[i++](); | ||
} | ||
} | ||
} | ||
}, | ||
true); | ||
}; | ||
return function(fn) { | ||
fns.push(fn) === 1 && global.postMessage(msg, '*'); | ||
}; | ||
})() : | ||
function(fn) { // old browsers | ||
setTimeout(fn, 0); | ||
}, | ||
isFunction = function(obj) { | ||
return typeof obj === 'function'; | ||
}; | ||
global.addEventListener? | ||
global.addEventListener('message', onMessage, true) : | ||
global.attachEvent('onmessage', onMessage); | ||
var Promise = function(val) { | ||
this._res = val; | ||
return function(fn) { | ||
fns.push(fn) === 1 && global.postMessage(msg, '*'); | ||
}; | ||
})() : | ||
function(fn) { // old browsers | ||
setTimeout(fn, 0); | ||
}, | ||
isFunction = function(obj) { | ||
return typeof obj === 'function'; | ||
}; | ||
this._isFulfilled = typeof val !== 'undefined'; | ||
this._isRejected = false; | ||
var Promise = function(val) { | ||
this._res = val; | ||
this._fulfilledCallbacks = []; | ||
this._rejectedCallbacks = []; | ||
}; | ||
this._isFulfilled = typeof val !== 'undefined'; | ||
this._isRejected = false; | ||
Promise.prototype = { | ||
valueOf : function() { | ||
return this._res; | ||
}, | ||
this._fulfilledCallbacks = []; | ||
this._rejectedCallbacks = []; | ||
}; | ||
isFulfilled : function() { | ||
return this._isFulfilled; | ||
}, | ||
Promise.prototype = { | ||
valueOf : function() { | ||
return this._res; | ||
}, | ||
isRejected : function() { | ||
return this._isRejected; | ||
}, | ||
isFulfilled : function() { | ||
return this._isFulfilled; | ||
}, | ||
isResolved : function() { | ||
return this._isFulfilled || this._isRejected; | ||
}, | ||
isRejected : function() { | ||
return this._isRejected; | ||
}, | ||
fulfill : function(val) { | ||
if(this.isResolved()) { | ||
return; | ||
} | ||
isResolved : function() { | ||
return this._isFulfilled || this._isRejected; | ||
}, | ||
this._isFulfilled = true; | ||
this._res = val; | ||
fulfill : function(val) { | ||
if(this.isResolved()) { | ||
return; | ||
} | ||
this._callCallbacks(this._fulfilledCallbacks); | ||
this._fulfilledCallbacks = this._rejectedCallbacks = null; | ||
}, | ||
this._isFulfilled = true; | ||
this._res = val; | ||
reject : function(error) { | ||
if(this.isResolved()) { | ||
return; | ||
} | ||
this._callCallbacks(this._fulfilledCallbacks); | ||
this._fulfilledCallbacks = this._rejectedCallbacks = null; | ||
}, | ||
this._isRejected = true; | ||
this._res = error; | ||
reject : function(error) { | ||
if(this.isResolved()) { | ||
return; | ||
} | ||
this._callCallbacks(this._rejectedCallbacks); | ||
this._fulfilledCallbacks = this._rejectedCallbacks = null; | ||
}, | ||
this._isRejected = true; | ||
this._res = error; | ||
then : function(onFulfilled, onRejected) { | ||
var promise = new Promise(), | ||
cb; | ||
this._callCallbacks(this._rejectedCallbacks); | ||
this._fulfilledCallbacks = this._rejectedCallbacks = null; | ||
}, | ||
if(!this._isRejected) { | ||
cb = { promise : promise, fn : onFulfilled }; | ||
this._isFulfilled? | ||
this._callCallbacks([cb]) : | ||
this._fulfilledCallbacks.push(cb); | ||
} | ||
then : function(onFulfilled, onRejected) { | ||
var promise = new Promise(), | ||
cb; | ||
if(!this._isFulfilled) { | ||
cb = { promise : promise, fn : onRejected }; | ||
this._isRejected? | ||
this._callCallbacks([cb]) : | ||
this._rejectedCallbacks.push(cb); | ||
} | ||
if(!this._isRejected) { | ||
cb = { promise : promise, fn : onFulfilled }; | ||
this._isFulfilled? | ||
this._callCallbacks([cb]) : | ||
this._fulfilledCallbacks.push(cb); | ||
} | ||
return promise; | ||
}, | ||
if(!this._isFulfilled) { | ||
cb = { promise : promise, fn : onRejected }; | ||
this._isRejected? | ||
this._callCallbacks([cb]) : | ||
this._rejectedCallbacks.push(cb); | ||
} | ||
fail : function(onRejected) { | ||
return this.then(null, onRejected); | ||
}, | ||
return promise; | ||
}, | ||
spread : function(onFulfilled, onRejected) { | ||
return this.then( | ||
function(val) { | ||
return onFulfilled.apply(this, val); | ||
}, | ||
onRejected); | ||
}, | ||
fail : function(onRejected) { | ||
return this.then(null, onRejected); | ||
}, | ||
_callCallbacks : function(callbacks) { | ||
if(!callbacks.length) { | ||
return; | ||
} | ||
spread : function(onFulfilled, onRejected) { | ||
return this.then( | ||
function(val) { | ||
return onFulfilled.apply(this, val); | ||
}, | ||
onRejected); | ||
}, | ||
var arg = this._res, | ||
isFulfilled = this.isFulfilled(); | ||
_callCallbacks : function(callbacks) { | ||
if(!callbacks.length) { | ||
return; | ||
} | ||
nextTick(function() { | ||
var i = 0, len = callbacks.length, cb; | ||
while(i < len) { | ||
var promise = (cb = callbacks[i++]).promise, | ||
fn = cb.fn; | ||
var arg = this._res, | ||
isFulfilled = this.isFulfilled(); | ||
if(isFunction(fn)) { | ||
var res; | ||
try { | ||
res = fn(arg); | ||
nextTick(function() { | ||
var i = 0, len = callbacks.length, cb; | ||
while(i < len) { | ||
var promise = (cb = callbacks[i++]).promise, | ||
fn = cb.fn; | ||
if(isFunction(fn)) { | ||
var res; | ||
try { | ||
res = fn(arg); | ||
} | ||
catch(e) { | ||
promise.reject(e); | ||
continue; | ||
} | ||
Vow.isPromise(res)? | ||
(function(promise) { | ||
res.then( | ||
function(val) { | ||
promise.fulfill(val); | ||
}, | ||
function(error) { | ||
promise.reject(error); | ||
}) | ||
})(promise) : | ||
promise.fulfill(res); | ||
} | ||
catch(e) { | ||
promise.reject(e); | ||
continue; | ||
else { | ||
isFulfilled? | ||
promise.fulfill(arg) : | ||
promise.reject(arg); | ||
} | ||
Vow.isPromise(res)? | ||
(function(promise) { | ||
res.then( | ||
function(val) { | ||
promise.fulfill(val); | ||
}, | ||
function(error) { | ||
promise.reject(error); | ||
}) | ||
})(promise) : | ||
promise.fulfill(res); | ||
} | ||
else { | ||
isFulfilled? | ||
promise.fulfill(arg) : | ||
promise.reject(arg); | ||
} | ||
} | ||
}); | ||
} | ||
}; | ||
}); | ||
} | ||
}; | ||
var Vow = { | ||
promise : function(val) { | ||
return new Promise(val); | ||
}, | ||
var Vow = { | ||
promise : function(val) { | ||
return new Promise(val); | ||
}, | ||
when : function(obj, onFulfilled, onRejected) { | ||
return (this.isPromise(obj)? obj : new Promise(obj)).then(onFulfilled, onRejected); | ||
}, | ||
when : function(obj, onFulfilled, onRejected) { | ||
return (this.isPromise(obj)? obj : new Promise(obj)).then(onFulfilled, onRejected); | ||
}, | ||
isPromise : function(obj) { | ||
return obj && isFunction(obj.then); | ||
}, | ||
isPromise : function(obj) { | ||
return obj && isFunction(obj.then); | ||
}, | ||
isFulfilled : function(obj) { | ||
return this.isPromise(obj)? obj.isFulfilled() : true; | ||
}, | ||
isFulfilled : function(obj) { | ||
return this.isPromise(obj)? obj.isFulfilled() : true; | ||
}, | ||
isRejected : function(obj) { | ||
return this.isPromise(obj)? obj.isRejected() : false; | ||
}, | ||
isRejected : function(obj) { | ||
return this.isPromise(obj)? obj.isRejected() : false; | ||
}, | ||
isResolved : function(obj) { | ||
return this.isPromise(obj)? obj.isResolved() : true; | ||
}, | ||
isResolved : function(obj) { | ||
return this.isPromise(obj)? obj.isResolved() : true; | ||
}, | ||
fulfill : function(val) { | ||
return this.when(val, null, function(error) { | ||
return error; | ||
}); | ||
}, | ||
fulfill : function(val) { | ||
return this.when(val, null, function(error) { | ||
return error; | ||
}); | ||
}, | ||
reject : function(error) { | ||
return this.when(error, function(val) { | ||
var promise = new Promise(); | ||
promise.reject(val); | ||
return promise; | ||
}); | ||
}, | ||
reject : function(error) { | ||
return this.when(error, function(val) { | ||
var promise = new Promise(); | ||
promise.reject(val); | ||
return promise; | ||
}); | ||
}, | ||
resolve : function(val) { | ||
return this.isPromise(val)? | ||
val : | ||
this.when(val); | ||
}, | ||
resolve : function(val) { | ||
return this.isPromise(val)? | ||
val : | ||
this.when(val); | ||
}, | ||
forEach : function(promises, onFulfilled, onRejected) { | ||
var i = 0, len = promises.length; | ||
while(i < len) { | ||
this.when(promises[i++], onFulfilled, onRejected); | ||
} | ||
}, | ||
forEach : function(promises, onFulfilled, onRejected) { | ||
var i = 0, len = promises.length; | ||
while(i < len) { | ||
this.when(promises[i++], onFulfilled, onRejected); | ||
} | ||
}, | ||
all : function(promises) { | ||
var resPromise = new Promise(), | ||
i = promises.length; | ||
all : function(promises) { | ||
var resPromise = new Promise(), | ||
i = promises.length; | ||
if(i) { | ||
var onFulfilled = function() { | ||
if(!--i) { | ||
var res = [], | ||
promise; | ||
while(promise = promises[i++]) { | ||
res.push(promise.valueOf()); | ||
if(i) { | ||
var onFulfilled = function() { | ||
if(!--i) { | ||
var res = [], | ||
promise; | ||
while(promise = promises[i++]) { | ||
res.push(promise.valueOf()); | ||
} | ||
resPromise.fulfill(res); | ||
} | ||
resPromise.fulfill(res); | ||
} | ||
}, | ||
onRejected = function(error) { | ||
resPromise.reject(error); | ||
}; | ||
}, | ||
onRejected = function(error) { | ||
resPromise.reject(error); | ||
}; | ||
this.forEach(promises, onFulfilled, onRejected); | ||
} | ||
else { | ||
resPromise.fulfill([]); | ||
} | ||
this.forEach(promises, onFulfilled, onRejected); | ||
} | ||
else { | ||
resPromise.fulfill([]); | ||
} | ||
return resPromise; | ||
}, | ||
return resPromise; | ||
}, | ||
allResolved : function(promises) { | ||
var resPromise = new Promise(), | ||
i = promises.length; | ||
allResolved : function(promises) { | ||
var resPromise = new Promise(), | ||
i = promises.length; | ||
if(i) { | ||
var onProgress = function() { | ||
if(i) { | ||
var onProgress = function() { | ||
if(!--i) { | ||
@@ -271,68 +274,68 @@ resPromise.fulfill(promises); | ||
this.forEach(promises, onProgress, onProgress); | ||
} | ||
else { | ||
resPromise.fulfill(promises); | ||
} | ||
this.forEach(promises, onProgress, onProgress); | ||
} | ||
else { | ||
resPromise.fulfill(promises); | ||
} | ||
return resPromise; | ||
}, | ||
return resPromise; | ||
}, | ||
any : function(promises) { | ||
var resPromise = new Promise(), | ||
len = promises.length; | ||
any : function(promises) { | ||
var resPromise = new Promise(), | ||
len = promises.length; | ||
if(len) { | ||
var i = 0, error, | ||
onFulfilled = function(val) { | ||
resPromise.fulfill(val); | ||
}, | ||
onRejected = function(_error) { | ||
i || (error = _error); | ||
if(++i === len) { | ||
resPromise.reject(error); | ||
} | ||
}; | ||
if(len) { | ||
var i = 0, error, | ||
onFulfilled = function(val) { | ||
resPromise.fulfill(val); | ||
}, | ||
onRejected = function(_error) { | ||
i || (error = _error); | ||
if(++i === len) { | ||
resPromise.reject(error); | ||
} | ||
}; | ||
this.forEach(promises, onFulfilled, onRejected); | ||
} | ||
else { | ||
resPromise.reject(Error()); | ||
} | ||
this.forEach(promises, onFulfilled, onRejected); | ||
} | ||
else { | ||
resPromise.reject(Error()); | ||
} | ||
return resPromise; | ||
}, | ||
return resPromise; | ||
}, | ||
timeout : function(origPromise, timeout) { | ||
var resPromise = new Promise(), | ||
timer = setTimeout(function() { | ||
resPromise.reject(Error('timed out')); | ||
}, timeout); | ||
timeout : function(origPromise, timeout) { | ||
var resPromise = new Promise(), | ||
timer = setTimeout(function() { | ||
resPromise.reject(Error('timed out')); | ||
}, timeout); | ||
origPromise.then( | ||
function(res) { | ||
clearTimeout(timer); | ||
resPromise.fulfill(res); | ||
}, | ||
function(error) { | ||
clearTimeout(timer); | ||
resPromise.reject(error); | ||
}); | ||
origPromise.then( | ||
function(res) { | ||
clearTimeout(timer); | ||
resPromise.fulfill(res); | ||
}, | ||
function(error) { | ||
clearTimeout(timer); | ||
resPromise.reject(error); | ||
}); | ||
return resPromise; | ||
} | ||
}; | ||
return resPromise; | ||
} | ||
}; | ||
if(typeof exports === 'object') { | ||
module.exports = Vow; | ||
} | ||
else if(typeof define === 'function') { | ||
define(function(require, exports, module) { | ||
if(typeof exports === 'object') { | ||
module.exports = Vow; | ||
}); | ||
} | ||
else { | ||
global.Vow = Vow; | ||
} | ||
} | ||
else if(typeof define === 'function') { | ||
define(function(require, exports, module) { | ||
module.exports = Vow; | ||
}); | ||
} | ||
else { | ||
global.Vow = Vow; | ||
} | ||
})(this); |
{ | ||
"name" : "vow", | ||
"version" : "0.1.4", | ||
"version" : "0.1.5", | ||
"description" : "Promises/A+ proposal compatible promises library", | ||
@@ -21,3 +21,3 @@ "homepage" : "https://github.com/dfilatov/jspromise", | ||
"uglify-js" : "1.3.4", | ||
"promises-aplus-tests": "git://github.com/promises-aplus/promises-tests.git" | ||
"promises-aplus-tests": "1.0.0" | ||
}, | ||
@@ -24,0 +24,0 @@ "main" : "index", |
@@ -0,5 +1,6 @@ | ||
<a href="http://promises-aplus.github.com/promises-spec"><img src="http://promises-aplus.github.com/promises-spec/assets/logo-small.png" align="right" /></a> | ||
Vow [![Build Status](https://secure.travis-ci.org/dfilatov/jspromise.png)](http://travis-ci.org/dfilatov/jspromise) | ||
========= | ||
Promises/A+ specification compatible promises library. | ||
Promises/A+ implementation. | ||
See https://github.com/promises-aplus/promises-spec. | ||
@@ -72,7 +73,15 @@ | ||
####when(valueOrPromise, [onFulfilled], [onRejected])#### | ||
####isFulfilled(value)#### | ||
####isRejected(value)#### | ||
####isResolved(value)#### | ||
####fulfill(value)#### | ||
Returns a promise that has already been fulfilled with the given ````value````. If ````value```` is a promise, returned promise will be fulfilled with fulfill/rejection value of given promise. | ||
####reject(reasonOrPromise)#### | ||
Returns a promise that has already been rejected with the given ````value````. If ````value```` is a promise, returned promise will be rejected with fulfill/rejection value of given promise. | ||
####reject(reason)#### | ||
Returns a promise that has already been rejected with the given ````reason````. If ````reason```` is a promise, returned promise will be rejected with fulfill/rejection value of given promise. | ||
@@ -82,6 +91,5 @@ ####resolve(value)#### | ||
####when(valueOrPromise, [onFulfilled], [onRejected])#### | ||
####all(promisesOrValues)#### | ||
####allResolved(promisesOrValues)#### | ||
####any(promisesOrValues)#### | ||
####all(promises)#### | ||
####allResolved(promises)#### | ||
####any(promises)#### | ||
####timeout(promise, timeout)#### |
@@ -1,1 +0,10 @@ | ||
(function(global){var nextTick=typeof process==="object"?process.nextTick:global.setImmediate?global.setImmediate:global.postMessage?function(){var fns=[],msg="__promise"+ +new Date;global.addEventListener("message",function(e){if(e.source===global&&e.data===msg){e.stopPropagation();var callFns=fns,i=0,len=fns.length;fns=[];while(i<len){callFns[i++]()}}},true);return function(fn){fns.push(fn)===1&&global.postMessage(msg,"*")}}():function(fn){setTimeout(fn,0)},isFunction=function(obj){return typeof obj==="function"};var Promise=function(val){this._res=val;this._isFulfilled=typeof val!=="undefined";this._isRejected=false;this._fulfilledCallbacks=[];this._rejectedCallbacks=[]};Promise.prototype={valueOf:function(){return this._res},isFulfilled:function(){return this._isFulfilled},isRejected:function(){return this._isRejected},isResolved:function(){return this._isFulfilled||this._isRejected},fulfill:function(val){if(this.isResolved()){return}this._isFulfilled=true;this._res=val;this._callCallbacks(this._fulfilledCallbacks);this._fulfilledCallbacks=this._rejectedCallbacks=null},reject:function(error){if(this.isResolved()){return}this._isRejected=true;this._res=error;this._callCallbacks(this._rejectedCallbacks);this._fulfilledCallbacks=this._rejectedCallbacks=null},then:function(onFulfilled,onRejected){var promise=new Promise,cb;if(!this._isRejected){cb={promise:promise,fn:onFulfilled};this._isFulfilled?this._callCallbacks([cb]):this._fulfilledCallbacks.push(cb)}if(!this._isFulfilled){cb={promise:promise,fn:onRejected};this._isRejected?this._callCallbacks([cb]):this._rejectedCallbacks.push(cb)}return promise},fail:function(onRejected){return this.then(null,onRejected)},spread:function(onFulfilled,onRejected){return this.then(function(val){return onFulfilled.apply(this,val)},onRejected)},_callCallbacks:function(callbacks){if(!callbacks.length){return}var arg=this._res,isFulfilled=this.isFulfilled();nextTick(function(){var i=0,len=callbacks.length,cb;while(i<len){var promise=(cb=callbacks[i++]).promise,fn=cb.fn;if(isFunction(fn)){var res;try{res=fn(arg)}catch(e){promise.reject(e);continue}Vow.isPromise(res)?function(promise){res.then(function(val){promise.fulfill(val)},function(error){promise.reject(error)})}(promise):promise.fulfill(res)}else{isFulfilled?promise.fulfill(arg):promise.reject(arg)}}})}};var Vow={promise:function(val){return new Promise(val)},when:function(obj,onFulfilled,onRejected){return(this.isPromise(obj)?obj:new Promise(obj)).then(onFulfilled,onRejected)},isPromise:function(obj){return obj&&isFunction(obj.then)},isFulfilled:function(obj){return this.isPromise(obj)?obj.isFulfilled():true},isRejected:function(obj){return this.isPromise(obj)?obj.isRejected():false},isResolved:function(obj){return this.isPromise(obj)?obj.isResolved():true},fulfill:function(val){return this.when(val,null,function(error){return error})},reject:function(error){return this.when(error,function(val){var promise=new Promise;promise.reject(val);return promise})},resolve:function(val){return this.isPromise(val)?val:this.when(val)},forEach:function(promises,onFulfilled,onRejected){var i=0,len=promises.length;while(i<len){this.when(promises[i++],onFulfilled,onRejected)}},all:function(promises){var resPromise=new Promise,i=promises.length;if(i){var onFulfilled=function(){if(!--i){var res=[],promise;while(promise=promises[i++]){res.push(promise.valueOf())}resPromise.fulfill(res)}},onRejected=function(error){resPromise.reject(error)};this.forEach(promises,onFulfilled,onRejected)}else{resPromise.fulfill([])}return resPromise},allResolved:function(promises){var resPromise=new Promise,i=promises.length;if(i){var onProgress=function(){if(!--i){resPromise.fulfill(promises)}};this.forEach(promises,onProgress,onProgress)}else{resPromise.fulfill(promises)}return resPromise},any:function(promises){var resPromise=new Promise,len=promises.length;if(len){var i=0,error,onFulfilled=function(val){resPromise.fulfill(val)},onRejected=function(_error){i||(error=_error);if(++i===len){resPromise.reject(error)}};this.forEach(promises,onFulfilled,onRejected)}else{resPromise.reject(Error())}return resPromise},timeout:function(origPromise,timeout){var resPromise=new Promise,timer=setTimeout(function(){resPromise.reject(Error("timed out"))},timeout);origPromise.then(function(res){clearTimeout(timer);resPromise.fulfill(res)},function(error){clearTimeout(timer);resPromise.reject(error)});return resPromise}};if(typeof exports==="object"){module.exports=Vow}else if(typeof define==="function"){define(function(require,exports,module){module.exports=Vow})}else{global.Vow=Vow}})(this); | ||
/** | ||
* Vow | ||
* | ||
* Copyright (c) 2012 Filatov Dmitry (dfilatov@yandex-team.ru) | ||
* Dual licensed under the MIT and GPL licenses: | ||
* http://www.opensource.org/licenses/mit-license.php | ||
* http://www.gnu.org/licenses/gpl.html | ||
* | ||
* @version 0.1.5 | ||
*/(function(e){var t=typeof process=="object"?process.nextTick:e.setImmediate?e.setImmediate:e.postMessage?function(){var t=[],n="__promise"+ +(new Date),r=function(e){if(e.data===n){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0;var r=t,i=0,s=t.length;t=[];while(i<s)r[i++]()}};return e.addEventListener?e.addEventListener("message",r,!0):e.attachEvent("onmessage",r),function(r){t.push(r)===1&&e.postMessage(n,"*")}}():function(e){setTimeout(e,0)},n=function(e){return typeof e=="function"},r=function(e){this._res=e,this._isFulfilled=typeof e!="undefined",this._isRejected=!1,this._fulfilledCallbacks=[],this._rejectedCallbacks=[]};r.prototype={valueOf:function(){return this._res},isFulfilled:function(){return this._isFulfilled},isRejected:function(){return this._isRejected},isResolved:function(){return this._isFulfilled||this._isRejected},fulfill:function(e){if(this.isResolved())return;this._isFulfilled=!0,this._res=e,this._callCallbacks(this._fulfilledCallbacks),this._fulfilledCallbacks=this._rejectedCallbacks=null},reject:function(e){if(this.isResolved())return;this._isRejected=!0,this._res=e,this._callCallbacks(this._rejectedCallbacks),this._fulfilledCallbacks=this._rejectedCallbacks=null},then:function(e,t){var n=new r,i;return this._isRejected||(i={promise:n,fn:e},this._isFulfilled?this._callCallbacks([i]):this._fulfilledCallbacks.push(i)),this._isFulfilled||(i={promise:n,fn:t},this._isRejected?this._callCallbacks([i]):this._rejectedCallbacks.push(i)),n},fail:function(e){return this.then(null,e)},spread:function(e,t){return this.then(function(t){return e.apply(this,t)},t)},_callCallbacks:function(e){if(!e.length)return;var r=this._res,s=this.isFulfilled();t(function(){var t=0,o=e.length,u;while(t<o){var a=(u=e[t++]).promise,f=u.fn;if(n(f)){var l;try{l=f(r)}catch(c){a.reject(c);continue}i.isPromise(l)?function(e){l.then(function(t){e.fulfill(t)},function(t){e.reject(t)})}(a):a.fulfill(l)}else s?a.fulfill(r):a.reject(r)}})}};var i={promise:function(e){return new r(e)},when:function(e,t,n){return(this.isPromise(e)?e:new r(e)).then(t,n)},isPromise:function(e){return e&&n(e.then)},isFulfilled:function(e){return this.isPromise(e)?e.isFulfilled():!0},isRejected:function(e){return this.isPromise(e)?e.isRejected():!1},isResolved:function(e){return this.isPromise(e)?e.isResolved():!0},fulfill:function(e){return this.when(e,null,function(e){return e})},reject:function(e){return this.when(e,function(e){var t=new r;return t.reject(e),t})},resolve:function(e){return this.isPromise(e)?e:this.when(e)},forEach:function(e,t,n){var r=0,i=e.length;while(r<i)this.when(e[r++],t,n)},all:function(e){var t=new r,n=e.length;if(n){var i=function(){if(!--n){var r=[],i;while(i=e[n++])r.push(i.valueOf());t.fulfill(r)}},s=function(e){t.reject(e)};this.forEach(e,i,s)}else t.fulfill([]);return t},allResolved:function(e){var t=new r,n=e.length;if(n){var i=function(){--n||t.fulfill(e)};this.forEach(e,i,i)}else t.fulfill(e);return t},any:function(e){var t=new r,n=e.length;if(n){var i=0,s,o=function(e){t.fulfill(e)},u=function(e){i||(s=e),++i===n&&t.reject(s)};this.forEach(e,o,u)}else t.reject(Error());return t},timeout:function(e,t){var n=new r,i=setTimeout(function(){n.reject(Error("timed out"))},t);return e.then(function(e){clearTimeout(i),n.fulfill(e)},function(e){clearTimeout(i),n.reject(e)}),n}};typeof exports=="object"?module.exports=i:typeof define=="function"?define(function(e,t,n){n.exports=i}):e.Vow=i})(this); |
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
1263795
18341
94