webui-aria2/js/libs/dojox/lang/async.js
2012-05-01 19:52:07 +08:00

156 lines
2.4 KiB
JavaScript

//>>built
define(["dijit","dojo","dojox"],function(_1,_2,_3){
_2.provide("dojox.lang.async");
(function(){
var d=_2,_4=d.Deferred,_5=d.forEach,_6=d.some,_7=_3.lang.async,_8=Array.prototype.slice,_9=Object.prototype.toString;
_7.seq=function(x){
var fs=_9.call(x)=="[object Array]"?x:arguments;
return function(_a){
var x=new _4();
_5(fs,function(f){
x.addCallback(f);
});
x.callback(_a);
return x;
};
};
_7.par=function(x){
var fs=_9.call(x)=="[object Array]"?x:arguments;
return function(_b){
var _c=new Array(fs.length),_d=function(){
_5(_c,function(v){
if(v instanceof _4&&v.fired<0){
v.cancel();
}
});
},x=new _4(_d),_e=fs.length;
_5(fs,function(f,i){
var x;
try{
x=f(_b);
}
catch(e){
x=e;
}
_c[i]=x;
});
var _f=_6(_c,function(v){
if(v instanceof Error){
_d();
x.errback(v);
return true;
}
return false;
});
if(!_f){
_5(_c,function(v,i){
if(v instanceof _4){
v.addCallbacks(function(v){
_c[i]=v;
if(!--_e){
x.callback(_c);
}
},function(v){
_d();
x.errback(v);
});
}else{
--_e;
}
});
}
if(!_e){
x.callback(_c);
}
return x;
};
};
_7.any=function(x){
var fs=_9.call(x)=="[object Array]"?x:arguments;
return function(_10){
var _11=new Array(fs.length),_12=true;
cancel=function(_13){
_5(_11,function(v,i){
if(i!=_13&&v instanceof _4&&v.fired<0){
v.cancel();
}
});
},x=new _4(cancel);
_5(fs,function(f,i){
var x;
try{
x=f(_10);
}
catch(e){
x=e;
}
_11[i]=x;
});
var _14=_6(_11,function(v,i){
if(!(v instanceof _4)){
cancel(i);
x.callback(v);
return true;
}
return false;
});
if(!_14){
_5(_11,function(v,i){
v.addBoth(function(v){
if(_12){
_12=false;
cancel(i);
x.callback(v);
}
});
});
}
return x;
};
};
_7.select=function(_15,x){
var fs=_9.call(x)=="[object Array]"?x:_8.call(arguments,1);
return function(_16){
return new _4().addCallback(_15).addCallback(function(v){
if(typeof v=="number"&&v>=0&&v<fs.length){
return fs[v](_16);
}else{
return new Error("async.select: out of range");
}
}).callback(_16);
};
};
_7.ifThen=function(_17,_18,_19){
return function(_1a){
return new _4().addCallback(_17).addCallback(function(v){
return (v?_18:_19)(_1a);
}).callback(_1a);
};
};
_7.loop=function(_1b,_1c){
return function(_1d){
var x,y=new _4(function(){
x.cancel();
});
function _1e(v){
y.errback(v);
};
function _1f(v){
if(v){
x.addCallback(_1c).addCallback(_20);
}else{
y.callback(v);
}
return v;
};
function _20(_21){
x=new _4().addCallback(_1b).addCallback(_1f).addErrback(_1e);
x.callback(_21);
};
_20(_1d);
return y;
};
};
})();
});