最近自己试验性的写了一个可以实现同步调用的JS函数。
使用的递归的原理。
var syncExe = function(){
var fLen = arguments.length;
var exe = function(funcs,count,sum,retval){
if(!!retval){
if(!('return' in exe)){
exe['return'] = [];
}
exe['return'].push(retval);
}
if(count == sum){
return;
}else{
funcs[count](function(str){
count++;
exe(funcs,count,sum,str);
});
}
}
exe(arguments,0,fLen);
return exe['return'];
};
使用
var f1 = function(cb){
for(var i =0;i<100;i++){
console.log('f1_'+i);
}
cb('f111');
};
var f2 = function(cb){
for(var i =0;i<100;i++){
console.log('f2_'+i);
}
cb('f222');
};
var f3 = function(cb){
for(var i =0;i<100;i++){
console.log('f3_'+i);
}
cb('f333');
};
var ret = syncExe(f1,f2,f3);
//ret = ['f111','f222','f333']
