跳到主要内容
CNode

js前端与nodejs后端都支持的并发处理后总回调类

分享
Aabans发布于 11 年前最后回复 11 年前
552180

库下载地址:Acan.js 情景一:循环N个并发回调后的总回调

var name={1:"dbget",2:"tplget",3:"apiget",3:"optget"};
var ccb=Acan.ccb(Acan.count(name),function(){
	//这里就是总回调
});
for(var i in name){
	setTimeout(function(){
		ccb.cb();
	},200);
};

情景二:并发任务数量确定的情况

var ccb=Acan.ccb(2,function(){
	//这里就是总回调
});
setTimeout(function(){
	ccb.cb();
},200);
setTimeout(function(){
	ccb.cb();
},200);

情景二:并发任务数量不确定的情况

var ccb=Acan.ccb(1,function(){
	//这里就是总回调
});
test1();
test2();
funtion test1(){
	ccb.at();
	setTimeout(function(){
		ccb.cb();
	},200);
}
funtion test2(){
	ccb.at();
	setTimeout(function(){
		ccb.cb();
	},200);
}
ccb.cb();

js前端及node.js开发高薪招聘 https://cnodejs.org/topic/5485353b73dcca8d21292a38

查看回复

回复 (5)

A
abans#511 年前
引用 i5ting@abans 不专业啊 编码风格完全没有,多少要加点空格吧 plain old object写成这样也是醉了 没命名空间也就算了 oo也太土

@i5ting oo是对于复杂的处理用的,基础函数库当然要用静态类,可以方便的直接用,像并发处理的就要封装成类了。合适的地方用合适的方式,并不一定要oo,静态函数的效率肯定比oo要快

I
i5ting#411 年前
引用 abans@i5ting 代码有什么问题?这些都是js的函数扩充,underscore、jquery、zepto这些基础库实现方式也是类似的,而且这些主流的函数库居然不支持严格判断对象和数组,Acan....

@abans 不专业啊

  • 编码风格完全没有,多少要加点空格吧
  • plain old object写成这样也是醉了
  • 没命名空间也就算了
  • oo也太土
A
abans#311 年前
引用 i5ting这代码,估计没人敢去吧、、、、、、、

@i5ting 代码有什么问题?这些都是js的函数扩充,underscore、jquery、zepto这些基础库实现方式也是类似的,而且这些主流的函数库居然不支持严格判断对象和数组,Acan.isArr与Acan.isObj就是严格区分的

I
i5ting#211 年前

这代码,估计没人敢去吧、、、、、、、

I
i5ting#111 年前
var Acan={};
Acan.isInt=function(s){
	return parseInt(s)===s?true:false;
}
Acan.isInts=function(s){
	return parseInt(s)==s?true:false;
}
Acan.isBool=function(s){
	return typeof(s)=='boolean'?true:false;
}
Acan.isNum=function(s){
	return typeof(s)=='number'?true:false;
}
Acan.isStr=function(s){
	return typeof(s)=='string'?true:false;
}
Acan.isArr=function(d){
	return d instanceof Array;
}
Acan.isObj=function(d){
	return d instanceof Object;
}
Acan.isFun=function(d){
	return d instanceof Function;
}
Acan.isDate=function(d){
	return d instanceof Date;
}
Acan.isDefined=function(d){
	return !("undefined" == typeof d);
}
Acan.isEle=function(d){
	if(Acan.isObj(d) && d.nodeType===1) return true;
	else return false;
}
Acan.isAele=function(d){
	if(Acan.isObj(d) && d.Aele===1) return true;
	else return false;
}
Acan.isJSON=function(s){
	var pi,p=['[','{','"'],e=[']','}','"'],rs=false;
	if(this.isStr(s) && s.length>1){
		pi=p.indexOf(s.substr(0,1));
		if(pi>=0 && s.substr(-1)==e[pi]) rs=true;
	}
	return rs;
}

参与回复

登录后即可参与回复。登录